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
。您也可以参考此 了解更多信息。
我的 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
。您也可以参考此