2016-07-01 51 views
0

我想在Android中以編程方式放置全局時區。亞行的方法是這樣的:「adb shell設置放全局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 shell來改變它?試試這個:

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

MMMM您的解決方案適用於:「亞行外殼getprop persist.sys.timezone」,但沒有爲:「亞行shell設置獲得全球TIME_ZONE」。也謝謝你。 – Alex

+0

您的命令僅適用於有根設備。看看上面提供的代碼,適用於我的Oneplus Two – babadaba

+0

是的。謝謝,babadaba! – Alex

相關問題