56

私はアンドロイドに本当に慣れていないので、アラームについて研究しています。その日が誕生日ならアラームを鳴らしたい。アラームマネージャーを使用しました。再起動後にクリアされると読んだので混乱しました。Androidフォンを持っていないので、エミュレーターを使用しています。

これが私のコードです:

public void schedAlarm() {
    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
    Intent intent = new Intent(this, AlarmService.class);
    pendingIntent = PendingIntent.getBroadcast(this, contact.id, intent, PendingIntent.FLAG_ONE_SHOT);
    am.setRepeating(AlarmManager.RTC, timetoAlarm, nextalarm, pendingIntent);
}

AlarmSerivce の代わりにこの BroadcastRecever を作成しました。

public void onReceive(Context context, Intent intent) {
    nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    CharSequence from = "It Birthday!";
    CharSequence message =" Greet your friend.";
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, new Intent(), 0);
    Notification notif = new Notification(R.drawable.ic_launcher, "Birthday", System.currentTimeMillis());
    notif.setLatestEventInfo(context, from, message, contentIntent);
    nm.notify(1, notif);
 }

これで十分ですか??

4

3 に答える 3

101

簡単な答えはNOです。ただしBroadCastReceiver、デバイスの起動が完了している間にアラームを開始するを作成することで、これを実現できます。

<action android:name="android.intent.action.BOOT_COMPLETED" />BroadCastReceiverクラスでブートアクティビティをトラップするために使用します。

次のように、AndroidManifest.xmlに上記の行を追加する必要があります。

<receiver android:name=".AutoStartUp" android:enabled="true" android:exported="false" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
     <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
    </receiver>
于 2012-08-20T08:26:01.657 に答える