AlarmManager无法在Lollipop中使用Samsung设备

Fra*_*res 6 android alarmmanager samsung-mobile android-5.0-lollipop android-5.1.1-lollipop

我开发了一个应用程序,它使用AlarmManager来设置需要在一年中的某个特定时间触发的群警报(通常大约50个).这是我正在使用的代码,因为4.4 kitkat更改了AlarmManager.

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
long setDate = fireDate.getTime(); // it's a calendar date defined above
Intent intent = new Intent(LOCAL_DISPLAY_MESSAGE_ACTION);
PendingIntent pending = PendingIntent.getBroadcast(ctx,
                            id, intent, PendingIntent.FLAG_UPDATE_CURRENT);

if (Build.VERSION.RELEASE.startsWith("6")) {
    am.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, setDate, pending);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
    am.setExact(AlarmManager.RTC_WAKEUP, setDate, pending);
} else {
    am.set(AlarmManager.RTC_WAKEUP, setDate, pending);
}
Run Code Online (Sandbox Code Playgroud)

除了上面的代码,我正在使用清单中正确定义的广播接收器.

public class LocalReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        PushWakeLocker.acquire(context);

        // do some stuff

        PushWakeLocker.release();
    }
}
Run Code Online (Sandbox Code Playgroud)

更多信息可能会有所帮助.

<uses-sdk
    android:minSdkVersion="10"
    android:targetSdkVersion="19" />
Run Code Online (Sandbox Code Playgroud)

几个月以前,我一直只是从三星设备(5.0 /5.1安卓版)得到了不好的评论,根本没有得到他们的本地通知.我的意思是,它没有触发警报,似乎设备跳过它或没有唤醒.

在测试中,主要是带有5.0.1的三星S4,我总是按时收到警报,所以这让我发疯.仅供参考,这段代码一直很好用.

我对此进行了很多研究,但遗憾的是我没有得到任何有用的信息.并不是他们得到延迟的警报(正如我在某些线程中所读到的那样),而是他们根本没有得到警报.所以这不是关于棒棒糖和报警管理员的已知问题.

我感谢您的时间,欢迎任何建议!

sai*_*otd 11

您的问题(或噩梦)是三星智能管理器.此应用程序自2015年起预装了所有三星手机,并且应该停用未使用的应用程序."它如何知道哪些应用未被使用?" 你可能会问 - 简单:

用户3天未启动的每个应用都会停用.

所有剩余的AlarmManager条目 - 当然 - 也会被删除.你可以在他们的"开发者论坛"上阅读它.请随时关注此处此处,直到这些线程被工作人员删除.我还没有看到三星有人回应这个话题.

"修复"此问题的唯一方法是通知您的应用用户有关情况,并向他们展示如何在智能管理器中将您的应用列入白名单.我们必须设置一个网站,其中包含分步说明,说明如何为我们的用户执行此操作.

您可以考虑设置后台服务,或者每六个小时左右调用一次AlarmManager - 这些黑客都不会起作用.

  • 更新:如果您的包名称包含"alert"或"alarm",Smart Manager将不会停用该应用程序.更多信息:http://stackoverflow.com/a/34085645/128092 (3认同)
  • 感谢您与我分享您的发现!你救了我的一天.三星做这样的事情并且对此不负任何责任真的很烦人.SMH. (2认同)