以编程方式在android中更改时区

Mat*_*hew 10 android

我想以编程方式在android中更改时区,比如将时区设置为"America/Los_Angeles".我怎样才能做到这一点.如何通过使用id来实现这一点.

Syn*_*sso 15

在你的 AndroidManifest.xml

<uses-permission android:name="android.permission.SET_TIME_ZONE"/>
Run Code Online (Sandbox Code Playgroud)

在你的来源:

AlarmManager am = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
am.setTimeZone("America/Los_Angeles");
Run Code Online (Sandbox Code Playgroud)

  • 此权限仅适用于系统应用程序. (4认同)
  • 在 android api 26 和 27 上收到此错误:setTimeZone:用户 10087 和当前进程都没有 android.permission.SET_TIME_ZONE。 (2认同)

Mar*_*ome 7

Abhishek 的代码只是定义了一个具有要在应用程序中使用的特定格式的 Calendar 实例,因此这是行不通的。

无法以编程方式更改手机的时区。但是,您可以将用户重定向到适当的设置:

startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));
Run Code Online (Sandbox Code Playgroud)


Rec*_*eck 5

如果这是在模拟器或您有 root 权限的设备上,您可以运行

adb shell "su -c 'setprop persist.sys.timezone America/Los_Angeles; stop; sleep 5; start'"
Run Code Online (Sandbox Code Playgroud)