2016-06-01 7 views
0

私はアンドロイドでWebページの内容を取得しようとしているのWebViewでHTMLをロードされます..私はよ..だから アヤックスのAndroid

を私はすでにJSoupを使用してみましたが、それはAJAX使用してサポートしていません。見えないWebビューの中でURLを読み込み、 onPageFinishedの方法でHTMLを取得しようとしています。

私はHTMLを取得できますが、ajaxが読み込まれたHTMLは表示されません。ここでは、コードです:

final WebView webView = (WebView) findViewById(R.id.testWebView); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer"); 
webView.setWebViewClient(new WebViewClient() { 
     public void onPageFinished(WebView view, String url) { 
      Log.d(TAG, "finished loading : "); 
      webView.loadUrl("javascript:window.HtmlViewer.showHTML" + 
        "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"); 
     } 
    }); 
webView.loadUrl(url); 



class MyJavaScriptInterface { 

    private Context ctx; 

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

    @JavascriptInterface 
    public void showHTML(String html) { 
     Log.d(TAG, "HTML: " + html); 
     new AlertDialog.Builder(ctx).setTitle("HTML").setMessage(html) 
       .setPositiveButton(android.R.string.ok, null).setCancelable(false).create().show(); 
    } 

} 

だから私の質問は以下のとおりです。

- なぜ、ページのHTMLを搭載したAjaxのhtmlのではないでしょうか?

-lライブラリなどを使用してページhtmlをajaxで読み込む別の方法がありますか?

答えて

0

HTMLファイルをロードするには、webView.loadData()メソッドを使用する必要があります。この方法でAjaxの読み込みを置き換えます。

webView.loadData("javascript:window.HtmlViewer.showHTML" + 
        "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');", "text/html; charset=utf-8",null); 

私はあなたの問題を解決することを願っています。

+0

私はWebViewに精通していませんが、webView.loadUrlをwebView.loadDataに置き換えましたが、showHTMLメソッドは呼び出されません。 onPageFinishedは常に呼び出されます –