PackageManager.getComponentEnabledSettings() 在冷启动之间是不是持久?

Posted

技术标签:

【中文标题】PackageManager.getComponentEnabledSettings() 在冷启动之间是不是持久?【英文标题】:Is PackageManager.getComponentEnabledSettings() persistent between cold starts?PackageManager.getComponentEnabledSettings() 在冷启动之间是否持久? 【发布时间】:2014-05-21 21:35:53 【问题描述】:

如果我使用下面的代码禁用 androidManifest.xml 中定义的静态 BroadcastReceiver,它会在重启后重新启用吗?似乎不是,但文档没有说是否应该。

final ComponentName compName =
        new ComponentName(context,
        MyBroadcastReceiver.class);

context.getPackageManager().setComponentEnabledSetting(
        compName,
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);

提前谢谢...

【问题讨论】:

【参考方案1】:

PackageManager.getComponentEnabledSettings() 在冷启动之间是否持续存在?

是的。它将在应用程序卸载/重新安装时重置。如果您使用setComponentEnabledSetting() 自行重置,它将被重置。如果具有超级用户权限的东西将其重置(例如,设备可能有一些用于控制ACTION_BOOT_COMPLETED 的管理器应用程序),它将被重置。而且我不确定应用升级会发生什么,因为我没有尝试过这种情况。否则,它应该保持持久性。

如果我使用下面的代码禁用 AndroidManifest.xml 中定义的静态 BroadcastReceiver,是否会在重启后重新启用?

没有。

【讨论】:

以上是关于PackageManager.getComponentEnabledSettings() 在冷启动之间是不是持久?的主要内容,如果未能解决你的问题,请参考以下文章