如何设置android rooted设备的时区?

时间:2013-12-25 11:28:39

标签: android

我有一个root用户设备,我想从我的应用程序中更改设备的默认时间,日期和时区。更改时间和日期非常简单,但如何更改设备的时区?

2 个答案:

答案 0 :(得分:0)

您需要android.permission.SET_TIME。然后通过 Context.getSystemService(Context.ALARM_SERVICE)使用AlarmManager,方法setTime()

用于将活动或服务的时间设置为2010/1/1 12:00:00的代码段:

Calendar c = Calendar.getInstance();
c.set(2010, 1, 1, 12, 00, 00);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setTime(c.getTimeInMillis());

如果您要更改时区,则方法应该非常相似(请参阅android.permission.SET_TIME_ZONE和setTimeZone

this linkthis

中的详情

答案 1 :(得分:0)

如果您拥有正确的权限(见下文),则可以使用AlarmManager执行此操作。例如,要将时间设置为2013/08/15 12:34:56,您可以执行以下操作:

Calendar c = Calendar.getInstance();
c.set(2013, 8, 15, 12, 34, 56);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setTime(c.getTimeInMillis());

您需要SET_TIME权限才能执行此操作。不幸的是,这是signatureOrSystem权限。

AndroidManifest.xml中的定义:

<!-- Allows applications to set the system time -->
<permission android:name="android.permission.SET_TIME"
    android:protectionLevel="signature|system"
    android:label="@string/permlab_setTime"
    android:description="@string/permdesc_setTime" />

唯一可以使用此权限的应用是:

  • 使用系统映像签名
  • 已安装到/ system / folder

除非你制作自定义ROM,否则你第一次运气不好。

第二,这取决于你在做什么。

  • 如果您正在构建广泛分发的应用(Play商店等),那么您 可能不应该。它只是root用户的选项,而且只能 手动安装。任何市场都不会安装它 正确的位置。
  • 如果你为自己构建一个应用程序(或者只是作为一个学习 锻炼),去吧。但是,你需要一个有根的手机,所以这样做 第一。然后,您可以直接将应用程序安装到/ system / app / 使用adb或文件管理器。有关更多详细信息,请参阅此类文章。

最后一点:在Android 2.2(API 8)中添加了SET_TIME权限和AlarmManager#setTime()。如果您尝试在以前的版本上执行此操作,我不确定它是否会起作用。