【问题标题】:Trigger BroadcastReceiver when low battery in AndroidAndroid中电量不足时触发BroadcastReceiver
【发布时间】:2021-07-02 11:19:11
【问题描述】:

无论应用程序是否处于前台/已终止,只要电池电量不足,我都会尝试触发广播接收器。广播的 onReceive() 从未被调用过。我已经关注Official doc 并且我已经经历了几乎所有的解决方案,但没有一个对我有用。请让我知道任何其他解决方案。谢谢:)

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)

    }
}

【问题讨论】:

    标签: android broadcastreceiver battery batterymanager


    【解决方案1】:

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

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

    这是官方文档的reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多