簡體   English   中英

從Android Webview獲取HTML無法正常工作

[英]Getting HTML from Android Webview not working

按照標題,我正在嘗試獲取當前Webview內容的HTML。 這是我的方法:

WebView webView = (WebView)findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);

WVClient wvClient = new WVClient();
wvClient.setFirst(true); 
webView.setWebViewClient(wvClient);
webView.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");

webView.setWebChromeClient(new WebChromeClient() {
    public void onProgressChanged(WebView view, int progress){
       progressBar.setProgress(progress); 
    }
});

webView.loadUrl("http://www.somthing.com"); 

MyJavaScriptInterface類:

public class MyJavaScriptInterface {

    private Context ctx;

    MyJavaScriptInterface(Context ctx) {
        this.ctx = ctx;
    }

    public void showHTML(String html) {
        Log.i("log","showHTML: "+html);
    }

}

WVClient類別:

public class WVClient extends WebViewClient {

private boolean first;

public WVClient() {
    super();
    setFirst(false);
}

public void onPageFinished(WebView view, String url) {
   // TODO Auto-generated method stub
   super.onPageFinished(view, url);

   if(first){

       builder.append("javascript:__doPostBack('promotions_landing$A1','');");          
       builder.append("javascript:window.HtmlViewer.showHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");

       view.loadUrl(builder.toString());

       setFirst(false);
    }

}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
}

public boolean isFirst() {
    return first;
}

public void setFirst(boolean first) {
    this.first = first;
}

}

一切似乎都正確,但無法正常工作。 MyJavascriptInterface中的showHTML()未調用。 我錯過了什么?

我找到了答案。 錯誤在MyJavaScriptInterface類上,JavascriptInterface類實現Annotation,因此注釋@JavascriptInterface必須在MyJavaScriptInterface類中編寫,如下所示,並且沒有類構造函數。

MyJavaScriptInterface類:

public class MyJavaScriptInterface{

   @JavascriptInterface
   public void showHTML(String html) {
       Log.i("log","showHTML: "+html);
   }
}

然后,webView的addJavascriptInterface進行如下更改:

webView.addJavascriptInterface(new MyJavaScriptInterface(), "HtmlViewer");

暫無
暫無

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

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