setComponentEnabledSetting 导致异常,它可能会杀死当前的应用程序?

mog*_*tou 3 android android-activity

我愿意通过以下代码从另一个活动中禁用一个活动,但这会导致一个问题:杀死当前的应用程序。SDK 版本是 4.0 。

 @Override
 public void onCreate(Bundle savedInstanceState) {  
     PackageManager pm = getPackageManager();

     pm.setComponentEnabledSetting(newComponentName(this,
                                    "com.xxx.launcher.desktop.testActivity"),
                                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,   
                                    PackageManager.DONT_KILL_APP);
Run Code Online (Sandbox Code Playgroud)

}

是不是缺少什么设置?

Eht*_*ury 5

你应该看看http://developer.android.com/reference/android/content/pm/PackageManager.html#DONT_KILL_APP

使用时必须小心一点PackageManager.DONT_KILL_APP,因为它可能导致未定义的行为。特别是如果 Activity 试图禁用自身。如果您针对另一个活动应该没问题,但我猜您要清除的活动在

看起来您的呼叫ComponentName不正确。您可能想要调用new ComponentName(this.getApplicationContext(), testActivity.class). 或者您可以使用new ComponentName("com.xxx.launcher.desktop","com.xxx.launcher.desktop.testActivity"),其中第一个参数是 AndroidManifest.xml 文件中的包,第二个参数是ComponentName. 有关设置 ComponentName 的信息,请查看以下 SO 问题:何时在 Android 中为 ComponentName 使用哪个构造函数?想要查询更多的信息。