[英]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.