微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我愿意通过以下代码从另一个活动中禁用一个活动,但这会导致问题:杀死当前应用程序.
   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);

}

缺乏技巧吗?

解决方法:

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

使用PackageManager.DONT_KILL_APP时必须格外小心,因为它可能导致不确定的行为.尤其是在活动试图禁用自身的情况下.如果您将另一个活动定位为目标,那应该没问题,但是我猜您要清除的活动位于

您对ComponentName的调用似乎不正确.
您可能要调用新的ComponentName(this.getApplicationContext(),testActivity.class).或者,您可以使用新的ComponentName(“ com.xxx.launcher.desktop”,“ com.xxx.launcher.desktop.testActivity”),其中第一个参数是AndroidManifest.xml文件中的包,第二个参数是完整的ComponentName的路径.请看以下SO问题,以获取有关设置ComponentName的信息:When to use which constructor for ComponentName in Android?,以获取更多信息.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐