2012-10-08 6 views
8

を選択すると、Intentを処理するすべてのアプリケーションがAndroidにリストされ、この割り当てを永続的または一度に設定するオプション"と"ちょうど1回 "のアクションボタン、2.xではチェックボックスです)。しかし、このコードのため:「|一度だけ必ず」ボタンと(私は記載されているアプリケーションを持って、それをタップして任意のを発射することができます)私の選択は永続的なものにすることができませんアプリケーションごとに1回だけ質問するセレクタでstartActivity()を作成できません

public class Redirector { 
    public static void showActivityWithChooser(Context context, int chooserLabelTitleId, Intent intent) { 
     try { 
     context.startActivity(Intent.createChooser(intent, 
        context.getResources().getString(chooserLabelTitleId))); 
     } catch(Exception e) { 
     e.printStackTrace(); 
     } 
    } 

    public static void viewInExternalApplication(Context context, String url) { 
     Intent intent = new Intent( Intent.ACTION_VIEW); 
     intent.setData(Uri.parse(url)); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 
     showActivityWithChooser(context, R.string.open_chooser_title, intent); 
    } 
} 

私は全く見られません。私は、Androidをユーザーの選択肢を永続させることができなくなったと考えていたのですか?

の写真を参照してください:レコードの

enter image description here

+0

「常に」は選択を永久にすることを意味します。あなたのアプリは、このダイアログ、つまりAndroidの一部を直接制御する方法はありません。 – mah

+0

@マ:あなたはポイントを逃した。 –

+1

確かに私はやった。しかし、私のコメントの後半は立っています。これはあなたのアプリから制御できるダイアログではありません。問題はshowActivityWithChooserを呼び出していることです。これは、ユーザーがデフォルトを変更できるようにするものではなく、強制的にユーザーを選択させることを意図しています。 – mah

答えて

16

:私は見てみたいものですが、右の私は(両方のダイアログボックス内のアプリケーションの異なる数は無関係です)今得るものであるダイアログを残しました - これは、(私の)バグの翻訳上のタイプでした。私が使用していたチューザーは、まさに右側の画像に見えるものです。そして、それはいつも私が呼んでいたからです。私は間違いなく、 "Always | Just once"機能を提供していて、 "Always"をタップしても表示されないと思っていました。しかしそれは間違っています。セレクタはと常にが表示されます。なぜなら、それがユーザーの選択を可能にするからです。 「いつも一回だけ」の機能は別のものです.とstartActivityForResult()のAndroidフレームワークの機能であり、必要に応じて自動的に表示されます。複数のアプリ(正確にはintent-filter)特定の意図を処理できます。 1つだけ(または以前に「常に」)タップされている場合は表示されません。あなたは開発者として気にする必要はありません。

try { 
    context.startActivity(intent); 
} catch (....) 

とフレームワークが残りをやらせる:

だからこの問題を解決するために、私はただそれだけでstartActivity()を呼び出す作るために私のviewInExternalApplication()コードを変更しました。

+1

正確に私が理解したかった! 10倍 – WindRider

関連する問題