android - 删除 Activity 作为默认启动器

标签 android android-intent android-package-managers android-launcher

我将我的 Activity 设置为默认启动器以拦截主页按钮点击,如下所示:

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

当我的 Activity ExampleActivity 启动时,如果我单击 home 键,系统会提示我进行选择。如果我选择将此设置为我的默认值并选择我的 Activity ,我将按照需要停留在我的 Activity 中。

问题是,当我离开 Activity 时,我尝试从默认启动器中删除我的 Activity ,但没有成功。

我试过:

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 的指定从未被删除。

有没有人有解决上述问题的有效方法?

我只是不想让主页按钮成为特定 Activity 的默认按钮,而不是我的整个应用程序。当我离开 Activity 时,它应该被删除并恢复为默认值。

最佳答案

如果您要清除其默认设置的是您的应用,您只需调用:

getPackageManager().clearPackagePreferredActivities(getPackageName());

然后,为了显示选择使用哪个启动器的对话框,使用:

final Intent intent=new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);

关于android - 删除 Activity 作为默认启动器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12594192/

相关文章:

Android - Settings.ACTION_DEVICE_INFO_SETTINGS 在 android 4.1.1 上崩溃

Android Intent 将文本/纯数据共享到 Google 云端硬盘

java - 内存泄漏和性能是否足够?

android - 有没有办法使用外部配置文件分发 Android 应用程序?

android - 什么是正内边距和负内边距?

android - START_STICKY 和 START_REDELIVER_INTENT 之间的区别?

android - 检测应用程序是否从华为应用市场安装

android - PackageManager 不适用于 Android 2.3.4

android - 错误代码-112在Android中意味着什么

java - AsyncTask onPostExecute 对话框不起作用