通過Android應用更改系統時間

童思宇發表於2018-02-08

假如說當我們點選DatePickerDialog的確定按鈕的時候,將我們選擇的時間更改到系統的時間上,操作步驟如下:

1.有一個DateButton按鈕,當我們點選的時候,呼叫一個彈出DatePickerDialog的方法:

private void displayDatePickerDialog() {
    DatePickerDialog.OnDateSetListener dateSetListener = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker datePicker, int years, int months, int days) {
            Log.d(TAG, "onDateSet: " + "years" + years + "months" + months + "days" + days);
            date_edit.setText(years + "/" + months + "/" + days);
            setSysDate(years, months, days);
            datePickerDialog.dismiss();
        }
    };
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH);
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    datePickerDialog = new DatePickerDialog(getActivity(), dateSetListener, year, month, day);
}

2.點選DatePickerDialog的確定按鈕的時候,呼叫設定系統時間的方法:

public void setSysDate(int year, int month, int day) {
    Calendar calendarDate = Calendar.getInstance();
    calendarDate.set(Calendar.YEAR, year);
    calendarDate.set(Calendar.MONTH, month);
    calendarDate.set(Calendar.DAY_OF_MONTH, day);

    long when = calendarDate.getTimeInMillis();
    if (when / 1000 < Integer.MAX_VALUE) {
        ((AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE)).setTime(when);
    }
}

同理:

1.有一個TimeButton按鈕,當我們點選的時候,呼叫一個彈出TimePickerDialog的方法:

private void displayTimePickerDialog() {
    TimePickerDialog.OnTimeSetListener timeSetListener = new TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
            Log.d(TAG, "onTimeSet: " + "hourOfDay" + hourOfDay + "minute" + minute);
            time_edit.setText(hourOfDay + ":" + minute);
            setSysTime(hourOfDay, minute);
            timePickerDialog.dismiss();
        }
    };
    int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
    int minute = calendar.get(Calendar.MINUTE);
    timePickerDialog = new TimePickerDialog(getActivity(), timeSetListener, hourOfDay, minute, true);
}

2.點選TimePickerDialog的確定按鈕的時候,呼叫設定系統時間的方法:

public void setSysTime(int hour, int minute) {
    Calendar calendarTime = Calendar.getInstance();
    calendarTime.set(Calendar.HOUR_OF_DAY, hour);
    calendarTime.set(Calendar.MINUTE, minute);
    calendarTime.set(Calendar.SECOND, 0);
    calendarTime.set(Calendar.MILLISECOND, 0);

    long when = calendarTime.getTimeInMillis();
    if (when / 1000 < Integer.MAX_VALUE) {
        ((AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE)).setTime(when);
    }
}

相關文章