Android - 在编辑清单以禁用组件后,它将始终被禁用

时间:2015-01-03 17:54:37

标签: android android-manifest

如果我在AndroidManifest中定义的broadcastReciever已启用并以编程方式禁用此组件 - 重启后它仍会被禁用吗?换句话说它会在重新启动后还能记住它的状态吗?

在禁用组件之后是否还有其他时间,系统可以再次启用它?

这里是用于在代码中禁用/启用广播接收器组件的方法:

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


   }

1 个答案:

答案 0 :(得分:3)

我在4.4.3 Android nexus上尝试过此操作,重启后没有记住更改。我必须保存共享首选项,然后安装一个启动完整侦听器。这样我就可以在启动完成时启用/禁用清单组件时设置首选项。重新启动设备后,确实记住了组件清单中的原始值。

换句话说,如果从清单中禁用了组件并且在代码中将其更改为启用,则在重新启动后,组件将再次被禁用(使用其初始值)。因此答案是否定的。重新启动后不会记住清单组件状态(至少在Nexus 4.4.3上)。