0

インテントのデフォルトのアクティビティを選択するようにユーザーに再プロンプトする方法はありますか? たとえば、ユーザーがデフォルトのホーム APK を選択し、その選択をもう一度再考してもらいたいとします。

2.1以前ではそれを行う方法を知っていましたが、2.2でそれを行う方法はありますか?

同様のことを行った有名な Home Switcher は、Google チームのおかげで 2.2 では動作しなくなりました

4

2 に答える 2

1

これは、アクティビティ選択ダイアログを表す方法です。「HOME」アプリケーションの Android のデフォルトの ResolverActivity を開始します。

Intent selector = new Intent("android.intent.action.MAIN");
selector.addCategory("android.intent.category.HOME");
selector.setComponent(new ComponentName("android", "com.android.internal.app.ResolverActivity"));

startActivity(selector);

上記のコードは、私の 2.2 対応タブレットで機能しています。実行すると、[Complete Actions with:] ダイアログが表示され、可能なすべてのホーム アプリケーションがリストに表示されます。


現在デフォルトで設定されているものを検出する方法として、すべての優先アクティビティを要求できます。リスト "filters" と "comps" には、.getPreferredActivities(...) を呼び出したときのデータが含まれます。

フィルター - インテント フィルター データが含まれており、データの種類を照会できます。

comps - インテント フィルタが一致した場合に呼び出されるコンポーネントを含む

このようにして、アプリケーションが現在の「ホーム」アプリケーションとして設定されているかどうかを確認できます。

List<IntentFilter> filters = new ArrayList<IntentFilter>();
List<ComponentName> comps= new ArrayList<ComponentName>();
getPackageManager().getPreferredActivities(filters, comps, null);
于 2011-07-13T19:27:55.637 に答える
0

たとえば、ユーザーがデフォルトのホーム APK を選択し、その選択をもう一度再考してもらいたいとします。

あなたのアプリが優先されない限り、それはもはや不可能です。clearPackagePreferredActivities()次に、優先選択として自分自身を削除するために使用できると思います。

つまり、自分のアプリに影響を与えることは歓迎されますが、他のアプリに影響を与えることは歓迎されません。

于 2010-10-19T19:18:58.973 に答える