1

アプリに通知が表示されます。addAction を介して通知にアクションを追加し、通知が消えて 1 時間後に再表示されるようにしたいのですが、このためのアクティビティを開きたくありません。最良のシナリオ: ユーザーがアクションをクリックすると、通知が消えて、通知のスヌーズ タイマーのように、1 時間後に再び表示されます。

アクティビティを開かずにこれを行う方法はありますか?

ご協力いただきありがとうございます

4

1 に答える 1

5

すべての通知アクションはPendingIntentから送信されます。確かにあなたは活動を始めたくなくて、あなたはそうする必要はありません。

ケースに最適なオプションは、PendingIntentを次のように作成することです。

public static PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags)

そうすれば、ユーザーが通知をクリックするたびに、システム上にブロードキャストが生成されます。次に、BroadcastReceiverを作成して、このブロードキャストを受信し、AlarmManagerで別のPendingIntentをスケジュールする必要があります。この2番目の保留中のインテントは別のブロードキャストになります。つまり、ブロードキャストが実行されるたびに、BroadcastReceiverは新しい通知を受信して​​表示できます。

それは意味がありますか?

**編集:

疑似例に明確にするために:

  • アプリには、「com.yourapp.mybroadcast」のブロードキャストを受信するためにマニフェストに登録されたBroadcastReceiverがあります
  • 通知にはcom.yourapp.mybroadcastPendingIntentがあり、追加のブール値isSchedule=trueおよびinttime= 60(60分)があります
  • ユーザーが通知をタップすると、このブロードキャストが開始され、BroadcastReceiverが受信しますonReceive(Context context, Intent intent)
  • onReceive内で、isSchedule = trueを読み取ります(つまり、新しいスケジュールと時間= 60分を作成する必要があります。したがって、AlarmManagerを使用して、isSchedule=falseで新しいブロードキャストPendingIntentを作成します。60分で起動されます。
  • AlarmManagerは60分後にBroadcastReceiverを再度呼び出しますが、今回はisSchedule = falseであるため、BroadcastReceiverは通知を再度表示する時刻を認識しています。
于 2013-02-18T13:40:01.073 に答える