mim*_*mim 9 html android webview
我有一个混合应用程序,它使用WebView从我自己的网站呈现外部HTML.它有一个问题,如果点击了任何链接,它就会启动一个浏览器窗口.我发现这段代码可以帮助我解决它的问题:
myWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
但现在问题是我希望它不适用于其中包含target = _blank的链接.因此,在使用target = _blank的链接应该在新的浏览器窗口中打开时,任何普通链接仍然在WebView中打开.
我们能做到这一点吗?
谢谢
Dar*_*pan 22
第一,
mWebView.getSettings().setSupportMultipleWindows(true);
然后WebChromeClient,覆盖OnCreateWindow()
private class MyWebChromeclient extends WebChromeClient {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog,
boolean isUserGesture, Message resultMsg) {
WebView newWebView = new WebView(WebViewActivity2.this);
view.addView(newWebView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
newWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse(url));
startActivity(browserIntent);
return true;
}
});
return true;
}
Run Code Online (Sandbox Code Playgroud)
Aas*_*ish 10
尝试这个。
myWebView.getSettings().setSupportMultipleWindows(true);
myWebView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, android.os.Message resultMsg)
{
WebView.HitTestResult result = view.getHitTestResult();
String data = result.getExtra();
Context context = view.getContext();
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(data));
context.startActivity(browserIntent);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
参考:Carson Ip
| 归档时间: |
|
| 查看次数: |
23141 次 |
| 最近记录: |