1
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 会弹出,他可以在里面上网。

我如何“收听”一个事件?

  • 当 URL 包含“google.com”时
  • 或者,当 HTML 包含单词“google”时

当用户使用我的 webview 浏览网页时,我想听这些东西,然后在它发生时调用一个函数。

4

3 回答 3

3

shouldOverrideUrlLoading 的文档让我读了几遍才明白。

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

我希望所有不是来自我的主机的 URL 都由手机的浏览器应用程序而不是我的 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;
  }
于 2010-12-22T15:40:46.137 回答
0

有一种视图方法似乎是不错的候选者。您真的应该在这里查看该课程的文档。

public void onLoadResource (WebView view, String url)

应该让您在页面加载之前检查 url。

public void onPageFinished (WebView view, String url)

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

于 2010-02-08T08:53:38.153 回答
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;
}
于 2010-06-28T11:21:24.300 回答