如何在 Android 的 WebView 中“监听”某些内容?
Posted
技术标签:
【中文标题】如何在 Android 的 WebView 中“监听”某些内容?【英文标题】:How do I "listen" for something in WebView, Android? 【发布时间】:2011-01-14 05:49:03 【问题描述】: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 浏览网页时,我想听这些东西,然后在它发生时调用一个函数。
【问题讨论】:
【参考方案1】: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;
【讨论】:
【参考方案2】:有一种视图方法似乎是不错的候选者。你真的应该看看here 类的文档。
public void onLoadResource (WebView view, String url)
应该让您在页面加载之前检查 url。
public void onPageFinished (WebView view, String url)
应该让你搜索实际完成的加载内容。
【讨论】:
【参考方案3】:要监听 google.com 请求,您应该像代码示例中那样覆盖 shouldOverrideUrlLoading,但您需要为这些请求提供替代操作,如下面的代码 sn-p 所示。
@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;
【讨论】:
以上是关于如何在 Android 的 WebView 中“监听”某些内容?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 的 WebView 中显示 PDF?
Android - 如何在 WebView 中访问本地存储值?