Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android setAlarmClock()三星设备上的奇怪行为(棒棒糖)_Android_Alarmmanager_Android Alarms - Fatal编程技术网

Android setAlarmClock()三星设备上的奇怪行为(棒棒糖)

Android setAlarmClock()三星设备上的奇怪行为(棒棒糖),android,alarmmanager,android-alarms,Android,Alarmmanager,Android Alarms,我想用AlarmManager类的setAlarmClock方法启动一个闹钟,但这不起作用,我有一个图标,它出现在状态栏中,当它是时间闹钟时消失,但我的广播接收器根本没有启动 我的代码如下: if(versionOfAndroid >= Build.VERSION_CODES.LOLLIPOP) { AlarmManager.AlarmClockInfo alarmClockInfo = new AlarmManager.AlarmClockInfo(calendar

我想用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.getBroadcast(this, numeroAlarm, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    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);
我的意图与onCreate()方法类似:

我这样注册接收者:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, numeroAlarm, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    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);

我试图按照@commonware的建议更改我的broadcastreceiver,它工作得很好。所以问题是我的动态注册接收器,我在清单文件中注册了我的接收器,它正常


问题不在于samsung device manager或setAlarmClock()方法,而在于接收器及其注册。在清单中,它运行良好。

您如何创建
PendingEvent
?您是否添加了日志记录以查看您是否获得了控制权,但没有进入
if
块?在闹钟事件发生时,是否有任何有趣的LogCat消息?@Commonware感谢您的帮助,我正在编辑我的帖子。是的,我在if{}语句中获得控制权(我在if{}语句中删除log.i(…))。当我启动警报时,我在Logcat:Activity\u idle id:android.os中有这些信息。BinderProxy@843990e时间:122065797。但除此之外,当触发报警时,只有状态栏中的图标消失。“是的,我在if{}语句中获得控制”——我现在看到您有两个
if
语句。我指的是
SelfWakeUpReceiver
中的那个。你能控制那里吗?如果是,则问题是设备不想启动您的活动。如果没有,那么问题是设备不想发送广播,或者您的
pendingent
不知何故被取消。@Commonware哦,好的,不,我的接收器中的If{}语句没有控制权。。。我不明白为什么?我在我的摩托罗拉设备(kitkat)上进行了测试,但它也不工作,所以我的接收器出了问题。我像在onCreate()方法中那样注册我的接收器(请参见编辑),我从未尝试过通过
registerReceiver()注册的接收器
setAlarmClock()
。这不太可能正常工作,因为您的进程可能会在调用
setAlarmClock()
和事件发生时间之间终止。我建议你在舱单上登记那个接收人。