0

これが私のコードです。

URL を読み込んだ後、Webview からページ コンテンツを取得したいだけです。

Android では、ページを表示している WebView があります。

ページを再度リクエストせずにページ ソースを取得するにはどうすればよいですか?

Android 3.0 では WebView に何らかの WebResourceResponse() メソッドが必要なようですが、使い方がわかりません。

 public class WebActivity extends Activity {
WebView mWebView;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.webView);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.loadUrl("https://xyz.com");
    mWebView.setWebViewClient(new HelloWebViewClient());



 }



       private class HelloWebViewClient extends WebViewClient  {

      public WebResourceResponse shouldInterceptRequest (WebView view, String url)
      {
        return null;


      }

      @Override
        public void onPageFinished(WebView view, String url)
        {
           /* This call inject JavaScript into the page which just finished loading. */
           mWebView.loadUrl("javascript:window.HTMLOUT.processHTML('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");

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


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}}
4

1 に答える 1

0

これが古いことは知っていますが、将来の訪問者のために、次のことがうまくいくはずです。

まず、次のようなインターフェースを定義する必要があります。

final class LoadingInterface {
    @JavascriptInterface 
    public void outputHTML(final String html){
        //do what ever you want with html
    }
}

次に、WebView 呼び出しで
webView.addJavascriptInterface(new LoadingInterface(), "INTERFACE");

入力onPageFinished

String js = "javascript:"
        +"var html = document.getElementsByTagName('html')[0].innerHTML;"
        +"window.INTERFACE.outputSchedule(html);";
        webView.loadUrl(js);

ページの一部だけが必要な場合は、次のgetElementsByTagName('html')[0]ようなものに置き換えることができますgetElementById('partOfPage')

于 2013-10-17T20:40:56.900 に答える