如何在WebView,Android中“监听”某些内容?

时间:2010-02-08 04:24:12

标签: java android uiwebview webview

private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }   }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        webview = (WebView) findViewById(R.id.webview);
        webview.setWebViewClient(new HelloWebViewClient());
        webview.getSettings().setJavaScriptEnabled(true);
        webview.loadUrl("http://mydomain.com");
    }

这是一个非常简单的webview演示(我按照教程编写)。当用户加载我的应用程序时,会弹出这个webview,并且他可以在其中访问互联网。

我如何“倾听”某个活动?

  • 当网址包含“google.com”
  • 或者,当HTML包含“google”一词时

当用户使用我的webview浏览网页时,我想听听这些内容,然后在功能发生时调用它。

3 个答案:

答案 0 :(得分:2)

shouldOverrideUrlLoading的文档带了几个读数来理解。

如果您希望当前的WebView处理url,则无需调用WebView.loadUrl,只返回false。如果您希望您的应用与特定网址完全不同,请执行您需要的操作并返回true。

我希望所有不是来自我主机的网址都可以通过手机的浏览器应用而不是我的WebView来处理。这是我的实施:

 @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
    boolean returnVal = false;
    if(url.startsWith(mUrlHost)) {
      //current Webview handles the URL
    } else {
      Toast.makeText(mActivity, "Launching Browser", Toast.LENGTH_SHORT).show();
      Uri uri = Uri.parse(url);
      Intent intent = new Intent(Intent.ACTION_VIEW, uri);
      mActivity.startActivity(intent);
      returnVal = true;
    }
    return returnVal;
  }

答案 1 :(得分:0)

有一种看似合适的观察方法。你真的应该看一下班级here的文档。

public void onLoadResource (WebView view, String url)

应该让你在加载页面之前检查网址。

public void onPageFinished (WebView view, String url)

应该让您搜索实际已完成的内容。

答案 2 :(得分:0)

要收听google.com请求,您应该覆盖代码示例中的shouldOverrideUrlLoading,但是您需要为这些请求提供替代操作,如下面的代码段所示。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.contains("google.com")) {
        // Here you can do whatever you want
        view.loadUrl("http://example.com/");
        return true;
    }

    // The default action, open the URL in the same WebView
    view.loadUrl(url);
    return true;
}