Android中电池电量不足时触发BroadcastReceiver



无论应用程序是否处于前台/已关闭状态,只要电池电量不足,我都会尝试触发广播接收器。广播的onReceive((从未被调用。我遵循了官方文档&我已经研究了几乎所有的解决方案,没有一个对我有效。请告诉我其他的解决方案。谢谢:(

Manifest.xml:

<receiver
android:name=".worker.LowBatteryBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" />
<action android:name="android.intent.action.BATTERY_OKAY" />
</intent-filter>
</receiver>

BroadcastReceiver.class

class LowBatteryBroadcastReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent?) {
val level: Int = intent!!.getIntExtra(BatteryManager.EXTRA_LEVEL, 0)
Timber.d("LowBatteryBroadcastReceiver - level: %d", level)
}
}

我发布了同样的问题,通过在代码中显式注册接收器来解决它(没有从清单中删除,但它应该是不流畅的(。我认为这与SDK 26的变化有关,在SDK 26中,除了BATTERY_LOWalas不属于的某些类型的广播外,不再允许隐式广播。

batteryLevel = new BatteryLevel();
mContext.registerReceiver(batteryLevel, new IntentFilter(Intent.ACTION_BATTERY_LOW));

以下是官方文件的参考资料

相关内容

  • 没有找到相关文章

最新更新