簡體   English   中英

我從模擬器上的webview獲取源代碼,但未在真實設備上獲取? -安卓

[英]I'm getting source code from webview on emulator, but not getting on real device ? - Android

該代碼在模擬器上有效,但在實際設備上無效。

classJavaScriptInterface{
    private TextView contentView;
    public JavaScriptInterface(TextView aContentView){
        contentView = aContentView;
    }
    @SuppressWarnings("unused")
    public void processContent(String aContent){
        final String content = aContent;
        contentView.post(new Runnable(){
            public void run(){
                contentView.setText(content);
                contentView.setTextColor(Color.DKGRAY);
            }
        });
    }
} 

TextView tv2 = (TextView) findViewById(R.id.source);
webview1.addJavascriptInterface(new JavaScriptInterface(tv2), "INTERFACE");

webview1.setWebViewClient(new WebViewClient(){  
    @Override   
    public void onPageFinished(WebView view, String url)   
    {   
        view.loadUrl("javascript:window.INTERFACE.processContent(document.getElementsByTagName('body')[0].innerText);");        
    }    
});  

以我的經驗, onPageFinished()並非總是一種可靠的方法來知道頁面是否真正完成。 根據要加載的內容, onPageFinished() 之后 ,可能還會發生其他重定向或框架。 有關更多詳細信息,請參見此其他SO帖子: 如何確定何時完全完成Android WebView的加載?

您可以通過在onPageFinished中添加延遲來快速檢查這是否是問題所在:

@Override   
public void onPageFinished(final WebView view, String url)   
{   
    view.postDelayed(new Runnable()   
    {      
        public void run()   
        {
            view.loadUrl("javascript:window.INTERFACE.processContent(document.getElementsByTagName('body')[0].innerText);");
        }       
    }, 5000);
} 

如果延遲有效,則應使用另一篇文章中描述的方法解決此問題(不要在最終產品中使用5s延遲的postDelayed)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM