私はImageview
をクリックしてURLを開くことができる複数のアプリケーションを表示する必要があります。このように:Android - Intent.createChooserからオプションを選択しても「開く」ダイアログが表示され続けます
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"));
これはうまく動作し、選択を開きます。しかし、すべてのアプリの中で、私はデバイスの "デフォルトのブラウザ"アプリを選択すると、それは再び "開く"ダイアログボックスを要求します。しかし、私はクロムやfirefoxのような他のアプリを選択した場合、それはうまく動作し、ダイアログで2番目のオープンは表示されません。
デフォルトのブラウザアプリとは別に、他のブラウザアプリでは正常に動作します。
質問:デフォルトのブラウザでIntent.createChooser
を使用した後でも、別の「開く」ダイアログボックスが開き、使用するアプリケーションを再度尋ねるような既知の問題はありますか?はいの場合、それを取り除く方法?
注:これはすべてのデバイスで発生するわけではありません。いくつかのデバイスではうまくいきますが、他のデバイスでは、Intent.createChooser
からオプションを選択してもダイアログが開いているかどうかを尋ねます。
これは、デフォルトのブラウザがサイトのモバイルページにリダイレクトされているために、新しいリクエストのように処理されるため、もう一度セレクタがポップされていると思います。サムスンの既定のブラウザとYouTube URLを使用してこれまでに見たことがあります。これは 'Intent.createChooser()'では問題ではなく、特定のブラウザーがどのように振る舞うかというだけです。 –
@MikeMに返信してくれてありがとうございます。この問題に対処するソリューションはありませんか? –
モバイルサイトのURLを明示的に渡すことができるため、リダイレクトする必要はありません。あなたの状況によっては、それは望ましくないかもしれません。 –