相关疑难解决方法(0)

Android:使用警报管理器定期获取电池状态

我希望定期获取Android设备的电池状态.

由于每隔几分钟轮询电池更换是一个坏主意,我想使用重复警报,可能每小时一次,可以调用一个获取当前电池状态的类.

但是我当前的实现给了我一个例外:

android.content.ReceiverCallNotAllowedException: IntentReceiver components are not allowed to register to receive intents.
Run Code Online (Sandbox Code Playgroud)

警报超时时调用的类如下:

public class GetBatteryStatusTimeout extends BroadcastReceiver{
    private static final String TAG = "GetBatteryStatusTimeout";
    @Override
    public void onReceive(Context context, Intent intent) {
        BatteryDataManager batteryData = new BatteryDataManager(context);
        batteryData.getStatus();
        Log.e(TAG, "GetBatteryStatus timer expired, getting status");
    }
}
Run Code Online (Sandbox Code Playgroud)

getStatus()方法调用代码注册粘性意图并获取电池状态:

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING;
boolean fullyCharged = status == BatteryManager.BATTERY_STATUS_FULL;
int …
Run Code Online (Sandbox Code Playgroud)

android battery broadcastreceiver alarmmanager android-intent

1
推荐指数
1
解决办法
1424
查看次数