我将我的活动设置为默认的启动程序来拦截主按钮的点击,如下所示:
<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按钮不是特定活动的默认按钮,而不是整个应用程序的默认按钮。当我离开活动时,它应该被删除并恢复为默认值。
最佳答案
如果清除默认值的是您的应用程序,您只需调用:
getPackageManager().clearPackagePreferredActivities(getPackageName());
然后,要显示选择要使用哪个启动程序的对话框,请使用:
final Intent intent=new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);