2015-12-02 64 views
0

我使用WebView通過URL獲取網頁的html源代碼。 在我的Moto G設備(5.1.1)中,舊設備使用的代碼無效。Chrome View或WebView獲取Html源代碼Android

這是代碼:

myJavaScriptInterface = new MyJavaScriptInterface(getContext()); 
    webview.addJavascriptInterface(myJavaScriptInterface, "HtmlViewer"); 

    webview.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      webview.loadUrl("javascript:window.HtmlViewer.showHTML" + 
        "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); 

      /* webview.evaluateJavascript("javascript:window.HtmlViewer.showHTML" + 
        "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');",null);*/ 


      /*view.loadUrl("javascript:console.log('MAGIC'+document.getElementsByTagName('html')[0].innerHTML);");*/ 
      // webview.evaluateJavascript("javascript:console.log('MAGIC'+document.getElementsByTagName('html')[0].innerHTML);",null); 
     } 
    }); 

    webview.loadUrl(url); 

class MyJavaScriptInterface { 

    private Context ctx; 

    MyJavaScriptInterface(Context ctx) { 
     this.ctx = ctx; 
    } 
    @JavascriptInterface 
    public void showHTML(String html) { 
     //new AlertDialog.Builder(ctx).setTitle("HTML").setMessage(html) 
      //  .setPositiveButton(android.R.string.ok, null).setCancelable(false).create().show(); 
     initStartAsyncTask(html); 
    } 

} 

所以我想在Android的

回答

3

得到HTML源嫌我這個解決:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
       webview.evaluateJavascript(
         "(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();", 
         new ValueCallback<String>() { 
          @Override 
          public void onReceiveValue(String html) { 
           Log.d("HTML", html); 
           initStartAsyncTask(html); 
           // code here 
          } 
         }); 
      }else{ 
       webview.loadUrl("javascript:window.HtmlViewer.showHTML" + 
         "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); 
      } 
+0

有關腳本的字符串,我用'」 document.getElementsByTagName('body')[0] .innerHTML;「'因爲我只對''內容感興趣(在KitKat +上)。 – karmakaze

+0

你能告訴我如何在吐司上顯示源代碼嗎?你的第一篇文章的哪一部分應該改變你的上面的代碼? – user1788736