我的应用程序使用webview加载站点。某些链接具有目标_blank并在新窗口中打开
public class EkChromeViewClient extends android.webkit.WebChromeClient {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
Log.d("!window!", "yes");
WebView newWebView = new WebView(view.getContext());
newWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
newWebView.getSettings().setDomStorageEnabled(true);
newWebView.getSettings().setSupportMultipleWindows(true);
newWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
newWebView.setWebViewClient(new EkWebViewClient());
view.addView(newWebView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
return true;
}
@Override
public void onCloseWindow(WebView window) {
Log.d("!window!", "yes");
super.onCloseWindow(window);
}
}
但我只需要在一个窗口中打开所有urls,而忽略target=_blank
发布于 2019-06-07 21:32:20
你需要做这样的事情。
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
Uri parsedUri = Uri.parse(view.getUrl());
WebView newWebView = new WebView(view.getContext());
view.addView(newWebView);
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(newWebView);
resultMsg.sendToTarget();
PackageManager packageManager = getPackageManager();
Intent browseIntent = new Intent(Intent.ACTION_VIEW).setData(parsedUri);
if (browseIntent.resolveActivity(packageManager) != null) {
startActivity(browseIntent);
return true;
}
return true;
}
});
https://stackoverflow.com/questions/52369640
复制相似问题