Android 电池电量不足时触发 BroadcastReceiver
Trigger BroadcastReceiver when low battery in Android
无论应用程序是否在 foreground/killed 中,只要电池电量不足,我都会尝试触发广播接收器。 Broadcast 的 onReceive() 从未被调用过。我遵循了 Official doc 并且我已经完成了几乎所有对我有用的解决方案 none。请让我知道任何其他解决方案。谢谢:)
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 的变化有关,其中不再允许隐式广播,除了 BATTERY_LOW
唉不属于的某些类型的广播。
batteryLevel = new BatteryLevel();
mContext.registerReceiver(batteryLevel, new IntentFilter(Intent.ACTION_BATTERY_LOW));
这里是reference官方文档
无论应用程序是否在 foreground/killed 中,只要电池电量不足,我都会尝试触发广播接收器。 Broadcast 的 onReceive() 从未被调用过。我遵循了 Official doc 并且我已经完成了几乎所有对我有用的解决方案 none。请让我知道任何其他解决方案。谢谢:)
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 的变化有关,其中不再允许隐式广播,除了 BATTERY_LOW
唉不属于的某些类型的广播。
batteryLevel = new BatteryLevel();
mContext.registerReceiver(batteryLevel, new IntentFilter(Intent.ACTION_BATTERY_LOW));
这里是reference官方文档