こんにちは私は、バックグラウンドサービスを介してユーザーが入力した日時に通知を設定するアプリケーションに取り組んでいます。ここで、毎日午後6時に通知/アラームを設定して、ユーザーに別のエントリを追加したいかどうかを尋ねます。どうすればこれを達成できますか?同じバックグラウンドサービスまたはブロードキャストレシーバーを使用する必要がありますか?そのためのより良い解決策を教えてください。チュートリアルは素晴らしいアイデアです。前もって感謝します。
最初に以下のようにアラームマネージャーを設定します
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 18);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
Intent intent1 = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0,intent1, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
ブロードキャストレシーバークラス「AlarmReceiver」を作成し、onReceiveのときに通知を発生させます。
public class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Intent notificationIntent = new Intent(context, EVentsPerform.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
context).setSmallIcon(R.drawable.applogo)
.setContentTitle("Alarm Fired")
.setContentText("Events to be Performed").setSound(alarmSound)
.setAutoCancel(true).setWhen(when)
.setContentIntent(pendingIntent)
.setVibrate(new long[]{1000, 1000, 1000, 1000, 1000});
notificationManager.notify(MID, mNotifyBuilder.build());
MID++;
}
}
そして、マニフェストファイルで、AlarmReceiverクラスのレシーバーを登録します。
<receiver Android:name=".AlarmReceiver"/>
アラームマネージャーを介してイベントを発生させるために特別な権限は必要ありません。
N.V.Raoの答えは正しいですが、AndroidManifest.xmlファイルのアプリケーションタグ内にreceiver
タグを配置することを忘れないでください。
<receiver Android:name=".alarm.AlarmReceiver" />