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