【发布时间】:2014-11-04 14:32:34
【问题描述】:
我有一个 webview,我在其中加载一个 url,当我单击 webview 时,我想在默认浏览器中打开链接。我尝试设置 WebViewClient 和 override shouldOverrideUrlLoading(WebView view, String url) 方法
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.e("BaseFragment", "shouldOverrideUrlLoading " + url);
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
return false;
}
但它不被 webview 调用。还有其他想法吗?
BaseFragment 是一个抽象类,其中我有以下 WebViewClient:
protected WebViewClient mAddWebViewClient = new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
float scale = addTopWebView.getHeight() / 170f;
addTopWebView.setInitialScale((int) (scale * 100f));
String js = "javascript:(function(){"
+ "document.getElementsByTagName('div')[0].style.height = 'auto';"
+ "document.getElementsByTagName('div')[0].style.width = 'auto';"
+ "})()";
view.loadUrl(js);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.e("BaseFragment", "shouldOverrideUrlLoading " + url);
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
return true;
}
};
扩展此 BaseFragment 的其他片段有一些 webviews,在 onViewCreated 方法中我设置了 webviewclient:
myWebView.getSettings().setJavaScriptEnabled(true);
addTopWebView = myWebView;
myWebView.setWebViewClient(mAddWebViewClient);
【问题讨论】:
-
我在这里没有发现任何问题(您可能希望返回
true以避免在 web 视图中也加载该页面,但这目前不相关)。您可以发布更多代码吗? (创建 webview,设置 WebViewClient...)