要在WebView中打开链接,android开发人员会定义自己的webview。
根据http://developer.android.com/guide/webapps/webview.html,应使用false
中的shouldOverrideUrlLoading
返回,以打开当前Webview中的网址。
("当前"意味着最近可能创建或使用?)
根据http://developer.android.com/resources/tutorials/views/hello-webview.html和各种博客:
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
true
我必须回来。
其中一个开发者网站是否有错误?它有API级别的区别吗? shouldOverrideUrlLoading最干净,最好用的是什么?
答案可以帮助我们的团队和许多其他开发人员使用android webviews.Thanks。
答案 0 :(得分:3)
如果您决定实施 WebViewClient :
webView.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// My own condition to decide if I should skip URL loading
boolean avoidURLLoading = ...
if (avoidURLLoading)
{
// Ask the WebView to avoid loading the URL,
// I want to manage this case on my own.
return true;
}
else
{
// Let the WebView load the URL
return false;
}
};
});
如果您没有实施 WebViewClient ,每次您要求 WebView 使用loadUrl
方法加载网址时,它会询问活动管理器找到一个合适的应用程序来加载URL(通常是设备中安装的Web浏览器)。
WebViewClient 中 shouldOverrideUrlLoading 的默认实施是
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return false;
}
所以,如果你只是写这样的东西
webView.setWebViewClient(new WebViewClient());
网址将加载到您自己的 WebView 中,而不是在外部网络浏览器中。
如果您想要修改网址,然后通过另一个true
来电加载新网址,或者您只是想避免,则通常会在 shouldOverrideUrlLoading 中返回loadUrl
加载URL并以不同的方式处理请求。
示例中的行为
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
相当于
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return false;
}
因为您告诉 WebView 以避免处理网址加载(return true
),但您还要使用view.loadUrl(url)
发出另一个请求,所以实际上你结束了加载网址。
答案 1 :(得分:0)
为了打开当前WebView(不是浏览器)中的链接,你应该像这样返回false:
mWebView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url){
return false;
}
});
答案 2 :(得分:0)
只要你实现setWebViewClient(..)我的答案和axample做同样的事情。另一方面,如果你没有实现它,浏览器将启动instaed。