我有一个root用户设备,我想从我的应用程序中更改设备的默认时间,日期和时区。更改时间和日期非常简单,但如何更改设备的时区?
答案 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)
中的详情答案 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" />
唯一可以使用此权限的应用是:
除非你制作自定义ROM,否则你第一次运气不好。
第二,这取决于你在做什么。
最后一点:在Android 2.2(API 8)中添加了SET_TIME权限和AlarmManager#setTime()。如果您尝试在以前的版本上执行此操作,我不确定它是否会起作用。