Alarmmanager не работает после перезагрузки телефона

Я создал AlarmManager по нажатию кнопки. но он не работает после перезагрузки телефона. мой AlarmbroadcastReceiver не звонит при перезагрузке телефона. это работает, когда блокировка телефона, приложение убито, но не работает после перезагрузки телефона. Я создал один индикатор выполнения, который запускается при нажатии кнопки и останавливается после срабатывания тревоги, но не останавливается при перезагрузке телефона. я добавил событие нажатия кнопки и класс приемника вещания

Событие нажатия кнопки

b1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
pb1.setVisibility(View.VISIBLE);
progress_edit.putBoolean("progress_one", true);
progress_edit.apply();
                    AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
                    Intent intnt = new Intent(getApplicationContext(), AlarmbroadcastReceiver.class);
                    intnt.setAction("com.ex.Alarm");
                    PendingIntent pending = PendingIntent.getBroadcast(getApplicationContext(), 0, intnt, 0);
                    manager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 120000, pending);
                                Log.d("Broadcast ","Fired");
                }
            });

Класс BroadcastReceiver

    @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("inside","broadcast receive");
            if(intent.getAction().equalsIgnoreCase("com.ex.Alarm"))
            {
enterSys_progress_edit.putBoolean("progress_one", false);
                enterSys_progress_edit.apply();
                Toast.makeText(context,"Receive",Toast.LENGTH_LONG).show();
            }

        }

Мой файл манифеста

  <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.krutarth.alarm">
        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <receiver android:name=".AlarmbroadcastReceiver" 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>
        </application>
    </manifest>

2 ответа

Решение

Все тревоги сбрасываются при перезагрузке телефона, поэтому создайте обратный вызов при перезагрузке, как это

public class BootCompletedIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {

    if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {
       ////// reset your alrarms here 
    }

}

}

ТАКЖЕ ДОБАВЬТЕ ЭТО ВАШЕ МАНИФЕТ ДЛЯ РЕГИСТРАЦИИ ВЕЩАНИЯ

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

Создайте метод, скажем,

setMyalarm(){
     // here set the alarm as u need
}

Теперь вызывайте этот метод setMyAlarm, всякий раз, когда и где вам нужно установить этот конкретный сигнал тревоги, будь то нажатие кнопки или приемник перезагрузки

Префект ANS Ak9637, но не забыл добавить разрешение

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Другие вопросы по тегам