2013-03-07 37 views
2

我愿意通过以下代码禁用另一项活动中的一项活动,但会导致问题:杀死当前的应用程序。 SDK版本是4.0。setComponentEnabledSetting导致异常,它可能会终止当前的应用程序?

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

}

是缺乏讨价还价要设置?

回答

3

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

你有当您使用PackageManager.DONT_KILL_APP要小心一点,因为它会导致不确定的行为。特别是如果活动试图禁用自己。如果您针对另一个活动,应该没问题,但我猜测您要清除的活动位于

看起来您拨打电话ComponentName不正确。 您可能需要致电new ComponentName(this.getApplicationContext(), testActivity.class)。或者,您可以使用new ComponentName("com.xxx.launcher.desktop","com.xxx.launcher.desktop.testActivity"),其中第一个参数是AndroidManifest.xml文件中的包,第二个参数是ComponentName的完整路径。查看以下SO问题以获取有关设置ComponentName的更多信息:When to use which constructor for ComponentName in Android?

相关问题