1

アプリの通知を作成しました。正しいタイミングで押すという意味で機能しており、押されたときに正しいアクティビティにリンクします。

ただ、特定の日に発射させたいので、繰り返しアラームで呼び出します。最初のテストでは、5 秒ごとにプッシュするように設定して、正しく繰り返されていることをすばやく確認できるようにしました。最初のプッシュの後、一度クリアすると、通知が再び表示されることはありません。

alarmManager を設定するためのメイン アクティビティのコードは次のとおりです。

private void notificationAlarm() {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.DAY_OF_WEEK, 1);
    cal.set(Calendar.HOUR, 1);
    cal.set(Calendar.MINUTE, 40);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    long interval = cal.getTimeInMillis()+5000;

    Intent alarmIntent = new Intent(this, alarmNotif.class);
    PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, PendingIntent.FLAG_ONE_SHOT);
    AlarmManager notifAlarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    //notifAlarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), alarmPendingIntent);
    notifAlarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), interval, alarmPendingIntent);


}

私のブロードキャストレシーバー内のコード:

public class alarmNotif extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    NotificationManager notifManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    String title = "Don't forget to order sushi from Arbuckle!";
    String subTitle = "Order before 10 AM with Arbuckle App";
    Intent notifIntent = new Intent(context, SecureAppStarter.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, notifIntent, PendingIntent.FLAG_ONE_SHOT);

    NotificationCompat.Builder notifBuilder = new NotificationCompat.Builder(context)
    .setContentTitle(title)
    .setContentText(subTitle)
    .setSmallIcon(R.drawable.ic_launcher)
    .setWhen(System.currentTimeMillis())
    .setContentIntent(pendingIntent);

    Notification notif = notifBuilder.getNotification();
    notifManager.notify(1, notif);
}

}

4

1 に答える 1

0

さて、私はそれを理解しました。

問題は FLAG_ONE_SHOT でした。FLAG_UPDATE_CURRENT である必要があります。

これにより、必要な間隔で通知を繰り返すことができます。

出来上がり!

于 2012-10-21T21:19:32.937 に答える