Android提供了一个名为"SET_TIME_ZONE"的权限,操作系统权限级别为"危险"。有人知道吗,如果应用程序具有此权限,该应用程序如何设置时区?
谢谢。
如果您的目标是更改系统的默认时区,请使用AlarmManager的setTimeZone()。
您可以通过多种方式设置时区:
-
您可以使用TimeZone.setDefault(),它将仅更改当前进程的时区。但正如文档中所指出的,这并不能持续整个应用程序生命周期。
-
您可以使用AlarmManager的setTimeZone()更改整个设备的时区。但您需要"SET_TIME_ZONE"权限。
如果你认为1。太危险了,你没有2的权限。最好的方法是从日历中获取每个日期,并通过setTimeZone()在日历实例上设置时区。
对于时区的程序设置,您需要使用日期类。参见此处的参考文件。
您需要使用SimpleDateFormat
类的setTimeZone()
方法。
以下是根据美国设置时区的示例代码
// First Create Object of Calendar Class
Calendar calendar = Calendar.getInstance();
// Now Set the Date using DateFormat Class
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss z");
// Finally Set the time zone using SimpleDateFormat Class's setTimeZone() Method
sdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));