#java #android #android-studio #datetime
Вопрос:
Я не смог изменить свое системное время( без использования какого-либо пользовательского интерфейса) в своем приложении для Android.
Идея в том, чтобы:
- Получить текущее системное время
- Переключите текущее время вперед и назад на несколько часов( без использования пользовательского интерфейса) Обратите внимание, что приложение для Android будет запущено на корневом устройстве.
Ниже приведен мой код:
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_open = findViewById(R.id.btn_startxk);
btn_open.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SimpleDateFormat simpdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
String cur_time = simpdate.format(cal.getTime());
Toast.makeText(MainActivity.this, cur_time, Toast.LENGTH_LONG).show();
TimeManager timeManager = TimeManager.getInstance();
cal.set(Calendar.MILLISECOND, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.HOUR_OF_DAY, 10);
long timeStamp = cal.getTimeInMillis();
timeManager.setTime(timeStamp);
}
Кто-нибудь может помочь исправить мой код?
Комментарии:
1. TimeManager предназначен для устройств Android, которые на самом деле больше не существуют и не будут работать на обычных устройствах, вы не можете установить системное время из своего приложения. Вам нужно иметь корневое устройство
2. Спасибо за ваш комментарий. Введите im с помощью эмулятора и уже включите корневой доступ.
Ответ №1:
Вам нужно разрешение android.SET_TIME. Затем используйте AlarmManager через Context.getSystemService(Контекст.ALARM_SERVICE) и его метод setTime().
Фрагмент для установки времени на 2010/1/1 12:00:00 для действия или услуги:
Calendar c = Calendar.getInstance();
c.set(2010, 1, 1, 12, 00, 00);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setTime(c.getTimeInMillis());
Если вы хотите изменить часовой пояс, подход должен быть очень похожим (см. android.разрешение.SET_TIME_ZONE и setTimeZone)
Комментарии:
1. Это вообще не устанавливает системное время
2. Я пробовал эту функцию, но она не работает, она просто немедленно выводит приложение из строя.
3. Обратите внимание, что приложение для Android должно запускаться на корневом устройстве.
4. я тестирую ldplayer 4.0.63, эмулятор для Android, в котором я уже включил «Корневое разрешение».
5. Каким-то образом android studio показывает красный цвет на «this.getSystemService», Нужно ли мне добавлять какой-либо дополнительный класс, чтобы использовать это?