我有一个Imageview
通过点击,我需要打开选择器,这将显示有资格打开url的多个应用程序。我正在做这样的事情:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse(article.getAndroidUrl()));
if(Build.VERSION.SDK_INT>21){
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
} else {
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(Intent.createChooser(intent, "Open Url Using"));
这可以正常工作并打开选择器。但是在所有的应用程序中,如果我选择了设备的"默认浏览器"应用程序,那么它又会要求"打开"对话框。然而,如果我选择其他应用程序,如chrome或firefox,那么它工作得很好,没有第二个打开对话框显示。
所以除了默认的浏览器应用程序,其他浏览器应用程序工作良好。
问题:是否有任何已知的问题,即使在使用Intent.createChooser
之后,对于默认浏览器,另一个"打开"对话框将打开,再次询问使用哪个应用程序?如果是,如何摆脱?
注意:这并不是发生在每个设备上。对于某些设备,这工作得很好,但对于其他设备,它要求再次打开对话框,甚至在选择Intent.createChooser
选项后。
这里的问题似乎是与特定的浏览器本身,不一定与您的Intent
选择器。当被重定向到移动站点时,基本浏览器通常会将其作为新请求处理,并可能显示自己的Intent
选择器。
一个解决方法是,如果可能的话,显式传递移动站点URL,这将消除重定向的需要,并直接在所选的浏览器中打开站点。