How to reset alarm after reboot Android Studio

自古美人都是妖i 提交于 2019-12-10 22:19:24

问题


I'm making an Alarm app which opens an activity based on time picked by User. Everything's working perfectly fine but alarm gets reset by reboot. I made an ON BOOT RECEIVER which works but I want to restart the Alarm only if the user wants it to go. I tried to use .putExtra to send data to ON BOOT broadcast but that data gets reset after reboot. I tried to set conditions using SharedPreference in broadcast but I'm stuck on how to use it. MainActivity

public class MainActivity extends AppCompatActivity {
NumberPicker hour;
NumberPicker min;
Button start;
Button stop;
TextView number;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    hour = (NumberPicker) findViewById(R.id.hour);
    min = (NumberPicker) findViewById(R.id.min);
    start = (Button) findViewById(R.id.starter);
    stop = (Button) findViewById(R.id.stopper);

    number = (TextView) findViewById(R.id.textView);

    hour.setMinValue(0);
    hour.setMaxValue(23);
    hour.setWrapSelectorWheel(false);

    min.setMinValue(1);
    min.setMaxValue(59);
    min.setWrapSelectorWheel(false);

    SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);
    final int myIntValue = sp.getInt("your_int_key", -1);

    Intent myIntent = new Intent(MainActivity.this, BootCompletedReceiver.class);

    if (myIntValue == 1){

        myIntent.putExtra("alarm", 3);
        sendBroadcast(myIntent);

    }
    else if (myIntValue == 2){

       myIntent.putExtra("alarm", 4);
       sendBroadcast(myIntent);

    }
    else
    { stop.setBackgroundColor(Color.RED); }


    start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Calendar calendar = Calendar.getInstance();
            calendar.set(Calendar.HOUR_OF_DAY, hour.getValue());
            calendar.set(Calendar.MINUTE, min.getValue());

            Intent intent = new Intent(getApplicationContext(),notification.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 120*1000, pendingIntent);


            SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            editor.putInt("your_int_key", 1);
            editor.apply();

        }
    });

    stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(getApplicationContext(),notification.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.cancel(pendingIntent);

            SharedPreferences sp = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE);
            SharedPreferences.Editor editor = sp.edit();
            editor.putInt("your_int_key", 2);
            editor.apply();

        }
    });

}}

Broadcast

public class BootCompletedReceiver extends BroadcastReceiver {



@Override
public void onReceive(Context context, Intent intent) {

 if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())) {

        Intent i = new Intent(context, RestartAlarmsService.class);

        //ComponentName service = context.startService(i);
        context.startService(i);


    }
}}

Service

public class RestartAlarmsService extends Service {

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}
public int onStartCommand(Intent intent, int flags, int startId) {

    //code to restart Alarm

    return START_NOT_STICKY;
}

}

Thank you.

来源:https://stackoverflow.com/questions/39442607/how-to-reset-alarm-after-reboot-android-studio

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!