我希望在Android中以编程方式更改时区,例如将时区设置为“America/Los_Angeles”。我该如何做到这一点?如何使用ID实现此目标。
我希望在Android中以编程方式更改时区,例如将时区设置为“America/Los_Angeles”。我该如何做到这一点?如何使用ID实现此目标。
在您的 AndroidManifest.xml
文件中
<uses-permission android:name="android.permission.SET_TIME_ZONE"/>
在你的源代码中:
AlarmManager am = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE);
am.setTimeZone("America/Los_Angeles");
Abhishek的代码只是定义了一个特定格式的日历实例,用于应用程序中的使用,所以这不起作用。
无法通过编程方式更改手机的时区。 然而,您可以将用户重定向到适当的设置:
startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));
如果您在模拟器或已经获取了root权限的设备上,可以运行以下命令:
adb shell "su -c 'setprop persist.sys.timezone America/Los_Angeles; stop; sleep 5; start'"
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
System.out.println(sdf.format(calendar.getTime()));
你应该拥有设置时区的系统签名。如果你不是设备的制造商,也许可以联系他们并询问keystore文件。之后,你就可以使用keystore文件将应用程序签名为系统应用。
TimeZone.getAvailableIDs()
来获取您系统中已知的时区列表。 - Synesso