インテントのデフォルトのアクティビティを選択するようにユーザーに再プロンプトする方法はありますか? たとえば、ユーザーがデフォルトのホーム APK を選択し、その選択をもう一度再考してもらいたいとします。
2.1以前ではそれを行う方法を知っていましたが、2.2でそれを行う方法はありますか?
同様のことを行った有名な Home Switcher は、Google チームのおかげで 2.2 では動作しなくなりました
インテントのデフォルトのアクティビティを選択するようにユーザーに再プロンプトする方法はありますか? たとえば、ユーザーがデフォルトのホーム APK を選択し、その選択をもう一度再考してもらいたいとします。
2.1以前ではそれを行う方法を知っていましたが、2.2でそれを行う方法はありますか?
同様のことを行った有名な Home Switcher は、Google チームのおかげで 2.2 では動作しなくなりました
これは、アクティビティ選択ダイアログを表す方法です。「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);
たとえば、ユーザーがデフォルトのホーム APK を選択し、その選択をもう一度再考してもらいたいとします。
あなたのアプリが優先されない限り、それはもはや不可能です。clearPackagePreferredActivities()
次に、優先選択として自分自身を削除するために使用できると思います。
つまり、自分のアプリに影響を与えることは歓迎されますが、他のアプリに影響を与えることは歓迎されません。