2016-07-01 1 views
0

Я хочу, чтобы глобальный часовой пояс был программным в Android. ADB путь, как это:«Настройки оболочки adb put global time_zone» не работает программно в Android

adb shell settings put global time_zone Europe/Stockholm 

Когда я получаю часовой пояс она отлично работает:

adb shell settings get global time_zone 

Проблема заключается в том, когда я хочу сделать это в Android Studio:

public void setTimeZone(){ 

    try { 
     Runtime.getRuntime().exec("settings put global time_zone Europe/Stockholm"); 

    }catch (IOException e) { 

     e.printStackTrace(); 
    } 

} 

Ошибка отсутствует, но часовой пояс не установлен.

Любые предложения, пожалуйста? Спасибо.

ответ

2

Почему вы пытаетесь изменить его с помощью оболочки adb? Попробуйте это:

AlarmManager am = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE); 
am.setTimeZone("Europe/Stockholm"); 

Вам нужно будет добавить это разрешение вашего AndroidManifest.xml

<uses-permission android:name="android.permission.SET_TIME_ZONE"/> 

Я надеюсь, что это поможет вам.

С корневого телефоном вы можете попробовать это:

try { 
     Process su = Runtime.getRuntime().exec("su"); 
     DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); 

     outputStream.writeBytes("settings put global time_zone Europe/Stockholm\n"); 
     outputStream.flush(); 

     outputStream.writeBytes("exit\n"); 
     outputStream.flush(); 
     su.waitFor(); 

    } catch (Exception e) { 

     e.printStackTrace(); 
    } 
+0

ммммы ваше решение работает: «ADB оболочки getprop persist.sys.timezone», но не для: «ADB настройки оболочки получить глобальный TIME_ZONE». Спасибо вам также. – Alex

+0

Ваша команда работает только с корневым устройством. Посмотрите на приведенный выше код, работает на моем Oneplus Two – babadaba

+0

Да. Спасибо, бабадаба! – Alex