2013-03-07 144 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?

相關問題