BATTERY_LOW

时间:2018-12-17 10:30:12

标签: android broadcastreceiver

应用

如果已经制作了一个使用静态注册的广播接收器订阅BATTERY_LOW意图的应用程序,则当该应用程序接收到该应用程序时,它将获取该位置并将其通过电子邮件发送给用户。该应用程序运行良好已有多年。

问题

最近Google强迫开发人员针对目标API 26进行优化

但是在设置了目标版本之后,该应用程序将永远不会启动,我会在日志中得到它:

  

W / BroadcastQueue(1113):不允许后台执行:正在接收   意图{act = android.intent.action.BATTERY_LOW flg = 0x4000010(has   })到com.androidlost / .receivers.BatteryLevelReceiver

解决方案

我已阅读https://commonsware.com/blog/2017/04/11/android-o-implicit-broadcast-ban.html,该书建议:

  

如果您正在接收系统发送的隐式广播(例如,   ACTION_PACKAGE_ADDED),将targetSdkVersion保持在25或更低,   直到我们找到更好的解决方法(希望)不涉及   轮询。

但这不再可能,因为Google现在强迫我们将目标版本设置为较高。

我唯一能想到的想法是提供一个运行中的服务,该服务可以动态注册广播接收器。但是,仅以BATTERY_LOW意图接收正在运行的服务几乎没有意义。

问题

如何从静态注册的广播接收器启动我的应用程序?欢迎任何建议或提示-手机断电之前,必须能够接收电话的位置...

0 个答案:

没有答案