我如何在 Android 的 WebView 中获取源代码

How i get source code in WebView in Android

在 onCreate()

    final WebView webview = (WebView) findViewById(R.id.webView1);
    WebSettings webSettings = webview.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webview.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");

         webview.setWebViewClient(new WebViewClient(){

                @Override
                public void onPageFinished(WebView view, final String url) {

                    String oAuthUrl="http://www.google.com";

                    if(url.contains(oAuthUrl))

                        webview.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
                    }
                }
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {


                }
          });

         webview.loadUrl("http://www.google.com");

MyJavaScriptInterface class

    class MyJavaScriptInterface
  {
  @SuppressWarnings("unused")
  public void processHTML(final String html)
  {
      Log.i("processed html",html);

        Thread OauthFetcher=new Thread(new Runnable() { 

            @Override
            public void run() {

                String oAuthDetails=null;
                  oAuthDetails=Html.fromHtml(html).toString();
                  Log.i("oAuthDetails",oAuthDetails);

            }
        });OauthFetcher.start();
    }
  }    

我发现堆栈中的代码溢出了。我运行了这个应用程序,但我没有在我的 webview 页面中获得源代码。我想获取 webview 的源代码并等于 String。我能怎么做?

确保将 @JavascriptInterface 添加到 processHTML 方法。如果您已将 targetSdkVersion 设置为 17 或更高,则必须将 @JavascriptInterface 注释添加到您希望 JavaScript 可用的任何方法(该方法也必须是 public),看看 here.

class MyJavaScriptInterface
{
  @JavascriptInterface
  public void processHTML(final String html)
  {
       Log.i("processed html",html);

       Thread OauthFetcher=new Thread(new Runnable() { 

        @Override
        public void run() {

            String oAuthDetails=null;
              oAuthDetails=Html.fromHtml(html).toString();
              Log.i("oAuthDetails",oAuthDetails);

        }
    });OauthFetcher.start();
  }
}