AlarmManager 不适用于 Android lollipop 5.0.2 的三星设备

AlarmManager doesn't work on samsung device with Android lollipop 5.0.2

我的 AlarmManager API 有问题,它在我的三星设备上根本不触发,但它在其他 Android 设备上工作...

我的代码是这样的:

 public void setAlarm(int hourAlarm,  int minutesAlarm, int numeroAlarm, boolean yesOrNoRepeatAlarm) {


    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, numeroAlarm, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    Log.i("numeroAlarm", numeroAlarm + "");
    Calendar calendar = Calendar.getInstance();

    if( (calendar.get(Calendar.HOUR_OF_DAY) > hourAlarm) ||
            ( calendar.get(Calendar.HOUR_OF_DAY) == hourAlarm && calendar.get(Calendar.MINUTE) > minutesAlarm)) {

        calendar.add(Calendar.DATE, 1);
    }

    calendar.set(Calendar.HOUR_OF_DAY, hourAlarm);
    calendar.set(Calendar.MINUTE, minutesAlarm);

    Log.i("timeInMillis", calendar.getTimeInMillis() + "");
    Log.i("repeatingAlarm", yesOrNoRepeatAlarm + "");

    if(yesOrNoRepeatAlarm) {

        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
    }
    else {

        alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
    }

}

它在其他设备上(特别是在 kitkat 上)运行良好,但在我的三星设备上运行失败, 你有什么想法吗?

我遇到了同样的问题,经过大量搜索和解决方法后,我认为 Lollipop 及更高版本的三星设备智能管理器可能是问题所在。此组件可以延迟警报管理器关闭,如果手机使用电池供电且屏幕关闭,则它会在 3 分钟后触发。当然,您可以停用智能管理器查看 this :

  • 在设备上启动 Samsung Smart Manager 应用程序
  • 点击电池
  • 点击应用优化
  • 详情
  • 找到你的应用
  • Select "Disabled for"

但在我的情况下它不起作用,禁用智能管理器在 2 台带有 Lollipop 的三星设备上都不起作用。它所做的工作是 "fool" 智能管理器,通过重构我的应用程序包的名称以包含 String "alert" 或 "alarm",例如 com.example.alarm.myApplication。您也可以参考此 了解更多信息。