我有一个Imageview
点击我需要打开的选择器,它会显示多个有资格打开网址的应用。我正在做这样的事情:
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
中选择了一个选项,它也会再次请求打开对话框。
答案 0 :(得分:1)
此处的问题似乎与特定浏览器本身有关,而不一定与您的 public function __construct($key, $cipher = 'AES-128-CBC')
{
$key = (string) $key;
if (static::supported($key, $cipher)) {
$this->key = $key;
$this->cipher = $cipher;
} else {
throw new RuntimeException('The only supported ciphers are AES-128-CBC and AES-256-CBC with the correct key lengths.');
}
}
选择器有关。当重定向到移动网站时,基本浏览器通常会将其作为新请求处理,并且可能会显示自己的Intent
选择器。
解决方法是尽可能明确地传递移动网站网址,这样就不需要重定向,并直接在所选浏览器中打开网站。