所以我希望能够监控我的WebView应用程序正在加载的URL。我想要完成的主要事情是将WebView保留在特定网站内,或者至少能够检测用户何时离开网站的URL。
实施例。如果我有www.google.com的基本网址,当用户点击图片时,他会收到“http://www.google.com/imghp”但是它仍然有www.google.com的基本网址,所以如果有办法监控当基本网址不再是www.google.com时,例如当用户点击搜索结果然后将其完全带到其他网站时。
这样做的目的是我想向用户显示一个对话框或Toast,让他们知道他们将离开创建此WebView应用程序的网站。
任何代码,想法或建议都将不胜感激。
示例代码
@Override
public void onLoadResource(WebView view, String url)
{
if (url.equals("http://www.google.com"))
{
//do your own thing here
view.loadUrl(url);
}
else
{
AlertDialog.Builder localBuilder2 = new AlertDialog.Builder(Webview_Main.this);
localBuilder2.setTitle("Hey Wait!");
localBuilder2.setMessage("You currently are about to leave the website\n\nIf you want to stay inside this website, Please click the Go Back button below");
localBuilder2.setIcon(R.drawable.ic_launcher);
localBuilder2.setPositiveButton("Go Back",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface paramDialogInterface,
int paramInt) {
web.goBack();
}
});
localBuilder2.setNegativeButton("Continue",
new DialogInterface.OnClickListener() {
public void onClick(
DialogInterface paramDialogInterface,
int paramInt) {
}
});
localBuilder2.show();
};
super.onLoadResource(view, url);
}
但是上面的代码不起作用,只会不断弹出警告对话框,因为URL可能不同。
答案 0 :(得分:1)
我已使用以下代码解决了我的问题。
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("http://www.google.com"))
{ view.loadUrl(url);
progressBar.setVisibility(View.VISIBLE);
}
else
{ Toast.makeText(getBaseContext(),
"Your about to leave Google.com",
Toast.LENGTH_LONG).show();
}
}
谢谢@MH。建议