アクティビティをデフォルトのランチャーとして設定して、ホームボタンのクリックを次のようにインターセプトします。
<activity
android:name=".ExampleActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
アクティビティExampleActivity
が起動したときにhomeキーをクリックすると、選択するように求められます。これをデフォルトにすることを選択し、アクティビティを選択した場合、必要に応じてアクティビティにとどまります。
問題は、アクティビティを終了するときに、デフォルトのランチャーからアクティビティを削除しようとしましたが、失敗することです。
私が試してみました:
ComponentName componentName = new ComponentName(
"com.example.exampleactivity",
"com.example.exampleactivity.class");
pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DEFAULT, PackageManager.DONT_KILL_APP);
と:
PackageManager pm = getActivity().getPackageManager();
ComponentName name = new ComponentName(this, "com.example.exampleactivity.class");
pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
しかし、私の指定homeは決して削除されません。
誰かが上記を修正するための実用的な方法を持っていますか?
アプリケーション全体ではなく、特定のアクティビティのデフォルトとしてホームボタンを使用したくないだけです。アクティビティを終了するときは、削除してデフォルトに戻す必要があります。