Android 如何每5分钟发送一次通知?

Android 如何每5分钟发送一次通知?,android,notifications,Android,Notifications,我想从通知发送给用户的那一刻起,每5分钟重复一次通知,只要用户不接受。他什么时候来我想取消闹钟 这是我的代码,但我不确定如何使用报警管理器和日历: acceptBtnPendingIntent = PendingIntent.getBroadcast(this, 123, acceptBtnIntent, 0); remoteView = new RemoteViews(this.getPackageName(), R.layout.notification_layout); remoteVie

我想从通知发送给用户的那一刻起,每5分钟重复一次通知,只要用户不接受。他什么时候来我想取消闹钟

这是我的代码,但我不确定如何使用报警管理器和日历:

acceptBtnPendingIntent = PendingIntent.getBroadcast(this, 123, acceptBtnIntent, 0);
remoteView = new RemoteViews(this.getPackageName(), R.layout.notification_layout);
remoteView.setOnClickPendingIntent(R.id.acceptCallBtn, acceptBtnPendingIntent);
remoteView.setImageViewResource(R.id.notificationIcon, R.drawable.notification_icon);
remoteView.setTextViewText(R.id.fromTxt, fromId);

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000 * 60 * 20, acceptBtnPendingIntent);

mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.mipmap.ic_launcher)
    .setCustomHeadsUpContentView(remoteView)
    .setDefaults(Notification.DEFAULT_ALL)
    .setContentIntent(acceptBtnPendingIntent)
    .setAutoCancel(true)
    .setPriority(NotificationManager.IMPORTANCE_HIGH);
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationsId, mBuilder.build());

希望这能在你的情况下起作用

//write the code where you would like to create and call alarm repetitively

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    Intent intent = new Intent(context,AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1234/*unique request code*/, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),5 * 60 * 1000 /*5 min in millis*/, pendingintent);

//your Broadcast Receiver
public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "YOUR TAG");
        //Acquire the lock
        wl.acquire();
showNotification(context);

  if (intent.getAction().equals("USER_ACCEPTED")) {

    //TODO: do your action you would like to do: do cancellation of alarm.. code here!
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(context,AlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1234/*unique request code*/, intent, PendingIntent.FLAG_CANCEL_CURRENT);
            alarmManager.cancel(pendingIntent);
            pendingIntent.cancel();

      }

}

public void showNotification(){

mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.mipmap.ic_launcher)
    .setDefaults(Notification.DEFAULT_ALL)
    .setAutoCancel(true)
    .setPriority(NotificationManager.IMPORTANCE_HIGH);
notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(notificationsId, mBuilder.build());

}

使用作业调度程序。因此,这不是一个代码编写服务——您应该展示您迄今为止尝试过的方法。