在创建我的活动时,我正在触发一个加载处理程序(虽然显示了一个微调器),其中包括在处理程序代码中我在三个私有WebView对象上调用loadURL。
这样做的目的是预先缓存这些网页,然后根据按钮触摸事件显示每个网页。实际的加载和显示工作正常,除了有时(看不到模式)我(或我的测试人员)无缘无故地获得浏览器选择屏幕(例如Chrome / Firefox)。
所以我的第一个问题是什么会导致这种情况,以及如何防止它发生?
否则你将如何执行以下操作:
答案 0 :(得分:1)
从不喜欢回答我自己的问题,但唯一的答案与问题无关。
似乎问题是由重定向引起的,正在加载的网页实际上没有重定向它,但服务器正在从子域执行内部重定向。我用以下代码解决了这个问题。
this.wvBasic.setWebViewClient(new WebViewClient() {
private String pendingUrl;
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (pendingUrl == null) {
pendingUrl = url;
}
}
@Override
public void onPageFinished(WebView view, String url) {
if (!url.equals(pendingUrl)) {
Log.d(TAG, "Detected HTTP redirect " + pendingUrl + "->" + url);
pendingUrl = null;
}
}
});
this.wvBasic.getSettings().setJavaScriptEnabled(false);
答案 1 :(得分:0)
这是完全正常的行为。您创建了intent
,操作系统正在搜索具有正确intent-filter
的活动来处理startActivity(intent)
。由于有更多的应用程序可以处理您的意图(在您的情况下更多的浏览器),操作系统为您提供了从这些活动中进行选择的可能性。
现在,我检查了this个帖子,它似乎是您正在寻找的信息。根据{{3}},您可以retrieve a set of activities that should be presented to the user as similar options
。如果您能够过滤这些活动,以便您的应用使用内置浏览器(保证在所有设备上安装),那么您就可以了。
答案 2 :(得分:0)
一个简单的解决方案是:
// Force links and redirects to open in the WebView instead of in a browser
mWebView.setWebViewClient(new WebViewClient());
来源:https://developer.chrome.com/multidevice/webview/gettingstarted