一部のAndroidアプリケーションでは、次の機能を統合したいと考えています。 ユーザーは何かを思い出させる時間を定義できます。時間が来たら、アプリケーションはこの時点でユーザーがアプリケーションを使用していなくても、通知バーに通知を作成する必要があります。Androidの予定通知(イベントなど)を作成する
この目的のために、AlarmManager、NotificationManager、Notification.Builderのクラスは見ていますか?
私はどのようにして事前通知を作成しますか?
public class AlarmNotificationReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
if (extras != null) {
String additionalData = extras.getString("displayText");
// show the notification now
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification mNotification = new Notification(R.drawable.ic_launcher, context.getString(R.string.app_name), System.currentTimeMillis());
PendingIntent pi = PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), 0); // open MainActivity if the user selects this notification
mNotification.setLatestEventInfo(context, context.getString(R.string.app_name), additionalData, pi);
mNotification.flags |= Notification.FLAG_AUTO_CANCEL | Notification.DEFAULT_SOUND;
mNotificationManager.notify(1, mNotification);
}
}
}
:
<receiver android:name="AlarmNotificationReceiver"></receiver>
は、受信したアラームを処理する新しいクラスファイルを作成します。
放送受信機を登録するAndroidManifestに下にこれを追加します。私のコードは(今のところ)これは
は今から3秒にアラームを設定する(MainActivity中など)、このコードを使用します。
Intent i = new Intent(this, AlarmNotificationReceiver.class);
i.putExtra("displayText", "sample text");
PendingIntent pi = PendingIntent.getBroadcast(this.getApplicationContext(), 234324246, i, 0);
AlarmManager mAlarm = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
mAlarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3*1000, pi);
この作品を制作するためには何を変更する必要がありますか?ありがとうございました!
二つの問題がある:私はコードでそれを変更したとき
- 通知のテキストは変更されません。 PendingIntent.getBroadcast(...)でrequestCodeを変更した場合のみ変更されます。このリクエストコードはどういう意味ですか?ランダムな値か0か
- 私の電話機をリブートした後、「計画された」通知またはアラームは消えました。しかし今、私はこれが正常な動作であることを見ました。どうすればこれを回避できますか?
これまでのところ何がうまくいかないのですか? –