如果我在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);
}
答案 0 :(得分:3)
我在4.4.3 Android nexus上尝试过此操作,重启后没有记住更改。我必须保存共享首选项,然后安装一个启动完整侦听器。这样我就可以在启动完成时启用/禁用清单组件时设置首选项。重新启动设备后,确实记住了组件清单中的原始值。
换句话说,如果从清单中禁用了组件并且在代码中将其更改为启用,则在重新启动后,组件将再次被禁用(使用其初始值)。因此答案是否定的。重新启动后不会记住清单组件状态(至少在Nexus 4.4.3上)。