从SharedPreferences中使用的TimePickerDialog显示通知

时间:2016-03-27 14:30:49

标签: android date time notifications timepicker

我遇到了问题:

我有一个应用程序可以在特定时间显示通知,可以使用TimePickerDialog选择和更改通知。然后将时间保存到SharedPreferences,并且应该从保存的时间启动通知。但是,通知未启动。我在AndroidManifest.xml中声明了适当的权限。这是我的代码:

SettingsActivity:

public class SettingsActivity extends AppCompatActivity {

SharedPreferences hour, minute, second, isTimeChosen;
SharedPreferences.Editor hour_editor, minute_editor, second_editor, itc_editor;
Button chooseTimeBtn;
private int mYear, mMonth, mDay, mHour, mMinute;
TextView timeTxt;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
    hour = getSharedPreferences("hour", 8);
    minute = getSharedPreferences("minute", 0);
    second = getSharedPreferences("second", 0);
    timeTxt = (TextView) findViewById(R.id.timeTxt);
    timeTxt.setText((String.valueOf(hour.getInt("hour", 0)) + ":" + (String.valueOf(minute.getInt("minute", 0)))));
    isTimeChosen = getSharedPreferences("isTimeChosen", 0);
    hour_editor = hour.edit();
    minute_editor = minute.edit();
    second_editor = second.edit();
    itc_editor =  isTimeChosen.edit();
    final Calendar c = Calendar.getInstance();
    if (isTimeChosen.getString("isTimeChosen", "false").equals("false")) {
        mHour = c.get(Calendar.HOUR_OF_DAY);
        mMinute = c.get(Calendar.MINUTE);
    } else {
        mHour = hour.getInt("hour", 8);
        mMinute = minute.getInt("minute", 0);
    }
    chooseTimeBtn = (Button) findViewById(R.id.chooseTimeBtn);
    chooseTimeBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            TimePickerDialog tpd = new TimePickerDialog(SettingsActivity.this,
                    new TimePickerDialog.OnTimeSetListener() {

                        @Override
                        public void onTimeSet(TimePicker view, int hourOfDay,
                                              int minute) {
                            hour_editor.putInt("hour", hourOfDay);
                            minute_editor.putInt("minute", minute);
                            hour_editor.commit();
                            minute_editor.commit();
                            itc_editor.putString("isTimeChosen", "true");
                            itc_editor.commit();
                            timeTxt.setText(hourOfDay + ":" + minute);

                        }
                    }, mHour, mMinute, true);
            tpd.show();
        }
    });

}
}

我的MainActivity:

public class MainActivity extends AppCompatActivity {


SharedPreferences hour, minute, second;
int sp_hour, sp_min;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    hour = getSharedPreferences("hour", 8);
    minute = getSharedPreferences("minute", 0);
    second = getSharedPreferences("second", 0);
    sp_hour = hour.getInt("hour", 8);
    sp_min = minute.getInt("minute", 0);
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR_OF_DAY, sp_hour);
    calendar.set(Calendar.MINUTE, sp_min);
    calendar.set(Calendar.SECOND, 0);
    if (calendar.getTime().compareTo(new Date()) < 0) {
        calendar.add(Calendar.DAY_OF_MONTH, 1);
    }
    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(ALARM_SERVICE);
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.menu_settings:
            Intent settings = new Intent(MainActivity.this, SettingsActivity.class);
            startActivity(settings);
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }

}
}

0 个答案:

没有答案