通过片段中的AlarmManager通知

时间:2017-10-18 14:59:13

标签: android notifications alarmmanager

在尝试让警报管理器处理内部通知时遇到问题。这是为应用程序的用户提供某个点的通知。

我的警报是在片段内设置的,代码如下。

        Intent notificationIntent = new Intent(getContext(), DeviceBootReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

        int hour = Integer.parseInt(vars.getShowRapport().getFinishTime().split(":")[0]);
        int min = Integer.parseInt(vars.getShowRapport().getFinishTime().split(":")[1]);

        vars.getShowRapport().getFinishDate().setHours(hour);
        vars.getShowRapport().getFinishDate().setMinutes(min);

        long futureInMillis = System.currentTimeMillis()+1000*60;
        //long futureInMillis = vars.getShowRapport().getFinishDate().getTime();
        AlarmManager alarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, futureInMillis, pendingIntent);

        getFragmentManager().beginTransaction().replace(R.id.makeRapportFragment,fragment).addToBackStack(null).commit();

在我的清单中我有

<receiver android:process=":remote" android:name=".DeviceBootReceiver">/receiver>

最后在我的接收器中称为DeviceBootReceiver。

    NotificationCompat.Builder builder =
            new NotificationCompat.Builder(context)
                    .setSmallIcon(R.drawable.ejservicebookincon)
                    .setContentTitle("Rapport finishing")
                    .setContentText("Rapport on item should be done.");
    Intent notificationIntent = new Intent(context, ServiceRapportMain.class);
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent,
            PendingIntent.FLAG_UPDATE_CURRENT);
    builder.setContentIntent(contentIntent);
    // Add as notification
    NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    manager.notify(0, builder.build());

不知道我的问题在哪里,我的接收器似乎永远不会被激活,所以无法检查该部分是否正常工作。如果有人可以指出,我的问题在哪里,希望有所帮助。就像我正在Android Studio中工作一样。

1 个答案:

答案 0 :(得分:0)

正如我在上面的评论中所写,我遇到的错误是我使用了AlarmManager.ELAPSED_REALTIME_WAKEUP,其中我应该使用的是AlarmManager.RTC_WAKEUP