我想用AlarmManager类的setAlarmClock方法启动一个闹钟,但这不起作用,我的状态栏中出现了图标,当时间闹钟时它会消失但是我的广播接收器根本没有发射。
我的代码是这样的:
if(versionOfAndroid >= Build.VERSION_CODES.LOLLIPOP) {
AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(calendar.getTimeInMillis(), pendingIntent);
alarmManager.setAlarmClock(alarmClockInfo, pendingIntent);
}
和我的广播接收器一样:
private class SelfWakeUpReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_WAKE_UP_ALARM)) {
Intent intent1 = new Intent(context, WakeUpActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(intent1);
}
我不明白,图标在闹钟时出现并消失,但没有其他事情发生。这个应用程序在其他设备上的kitkat工作正常,而不是三星与他们的智能管理器......
我的pendingIntent就是这样:
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, numeroAlarm, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
和我在onCreate()方法中的意图:
broadcastIntent = new Intent(this, SelfWakeUpReceiver.class);
broadcastIntent.setAction(ACTION_WAKE_UP_ALARM);
我注册接收器:
intentFilter = new IntentFilter();
intentFilter.addAction(BluetoothLeService.ACTION_GATT_CONNECTED);
intentFilter.addAction(BluetoothLeService.ACTION_GATT_DISCONNECTED);
intentFilter.addAction(WakeUpActivity.ACTION_STOP_ALARM);
intentFilter.addAction(ACTION_WAKE_UP_ALARM);
registerReceiver(mSelfWakeUpReceiver, intentFilter);
答案 0 :(得分:0)
我试图按照@CommonsWare的建议更改我的广播接收器并且它工作正常。所以问题是我的动态注册接收器,我在清单文件中注册了我的接收器并且没问题。
问题不是三星设备管理器或setAlarmClock()方法,而是接收器及其注册。在清单中,它运行良好。