我将我的活动设置为默认的启动程序来拦截主按钮的点击,如下所示:

<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);

07-26 09:07
查看更多