2015-01-03 23 views
2

如果我有AndroidManifest中定義的broadcastReciever作爲啓用並以編程方式禁用此組件 - 重新啓動後它仍將被禁用?換句話說,重新啓動後,它是否還記得它的狀態?Android - 在編輯清單以禁用組件後,將始終禁用它

在我禁用一個可以被系統重新啓用的組件之後會有其他時間嗎?

這裏使用方法IM禁用/啓用代碼中的廣播接收器組件:

private void setEnabledFromManifest(boolean enable){ 
    final PackageManager pm = getPackageManager(); 
     final ComponentName component = new ComponentName(this, 
        MyPhoneStateReceiver.class); 
     final int flags = PackageManager.DONT_KILL_APP; 
     pm.setComponentEnabledSetting(
       component, 
       enable ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED:PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
        flags); 


    } 

回答

0

重新啓動後,將它仍然被禁用?

是的。

+0

@bartektartanus:「這不能提供問題的答案」 - 是的,它的確如此。這個問題的答案是「是」。 – CommonsWare

3

我在4.4.3 Android連接上試過這個,重啓後沒有記住這個改變。我不得不保存一個共享首選項,然後安裝一個啓動完成監聽器。這樣我就可以設置首選項,如果清單組件應該在啓動完成時啓用/禁用。設備重新啓動後,組件清單中的原始值確實被記住了。換句話說,如果您的組件在清單中被禁用,並且您在代碼中將其更改爲啓用,那麼在重新引導後組件將再次被禁用(使用其初始值)。因此答案是否定的。清單組件狀態在重啓後不記得(至少在Nexus 4.4.3上)。