Android webView 外部 link -> 新 Activity
Android webView external link -> new Activity
在 activity 1 中,我获得了网络视图。对于每个 link 到外部网站(例如,如果您在 facebook 上并单击 link 到亚马逊)应该 activity 2 开始。
Activity 2 还包含一个网络视图。此 Web 视图应从 activity 1.
加载单击的 link
我读到了 "shouldOverrideUrlLoading" 方法。但是新的api级别太高了。并且已弃用的触发器会在 Web 视图中的每次点击时触发(如果您不离开该站点也是如此)。我可以过滤 - 但它仍然被弃用。
所以我尝试了这种方式:
WebView view = (WebView) rootView.findViewById(R.id.webView);
view.setWebViewClient(new WebViewClient());
view.getSettings().setSupportMultipleWindows(true);
view.setWebChromeClient(new WebChromeClient() {
@Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg)
{
Intent externalLinkIntent = new Intent(getActivity(), ExternalLinkActivity.class);
Bundle bundle = new Bundle();
bundle.putString("externalLink", "externalLinkGoesHere");
externalLinkIntent.putExtras(bundle);
startActivity(externalLinkIntent);
return true;
}
});
仅当我真的离开实际站点时才会触发此方法。但是对我来说,不可能得到该死的 url 的 resultMsg。通常用于调用默认的chrome浏览器,用于外部links.
有什么想法或其他方法吗?
谢谢!
已解决
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
String targetUrl = view.getHitTestResult().getExtra();
//More actions
}
在 activity 1 中,我获得了网络视图。对于每个 link 到外部网站(例如,如果您在 facebook 上并单击 link 到亚马逊)应该 activity 2 开始。
Activity 2 还包含一个网络视图。此 Web 视图应从 activity 1.
加载单击的 link我读到了 "shouldOverrideUrlLoading" 方法。但是新的api级别太高了。并且已弃用的触发器会在 Web 视图中的每次点击时触发(如果您不离开该站点也是如此)。我可以过滤 - 但它仍然被弃用。
所以我尝试了这种方式:
WebView view = (WebView) rootView.findViewById(R.id.webView);
view.setWebViewClient(new WebViewClient());
view.getSettings().setSupportMultipleWindows(true);
view.setWebChromeClient(new WebChromeClient() {
@Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg)
{
Intent externalLinkIntent = new Intent(getActivity(), ExternalLinkActivity.class);
Bundle bundle = new Bundle();
bundle.putString("externalLink", "externalLinkGoesHere");
externalLinkIntent.putExtras(bundle);
startActivity(externalLinkIntent);
return true;
}
});
仅当我真的离开实际站点时才会触发此方法。但是对我来说,不可能得到该死的 url 的 resultMsg。通常用于调用默认的chrome浏览器,用于外部links.
有什么想法或其他方法吗?
谢谢!
已解决
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
String targetUrl = view.getHitTestResult().getExtra();
//More actions
}