Подтвердить что ты не робот

Менеджер Alarm сохраняется даже после перезагрузки?

Я действительно новичок в андроиде, я изучал сигналы тревоги. Я хочу, чтобы в этот день был день рождения. Я использовал диспетчер аварийной сигнализации. Я был сбит с толку, потому что я прочитал, что он очищается после перезагрузки. У меня нет телефона для 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);
}

Я сделал этот BroadcastRecever заменой для AlarmSerivce Здесь:

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);
 }

достаточно ли этого?

4b9b3361

Ответ 1

Простой ответ будет НЕТ. Но да, вы можете достичь этого, создав BroadCastReceiver, который запустит Alarm во время завершения загрузки устройства.

Используйте <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>

Ответ 2

Да, вы можете заставить AlarmManager работать даже после перезагрузки. Возможно, это самый простой способ: добавьте приведенный ниже код в свой AndroidManifest.xml:

<receiver android:name=".AlarmReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>

не забудьте включить пользовательское разрешение в AndroidManifest.xml как:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

Ответ 3

в некоторых телефонах добавляется только

<action android:name="android.intent.action.Boot_COMPLETED" />

не работает, вам также нужно добавить

<action android:name="android.intent.action.QUICKBOOT_POWERON" />

вместе с предыдущим