如何以编程方式设置时间到设备
我创build了一个应用程序,用服务器时间replace当前的显示时间。 我已经尝试了很多,但是我没有find解决scheme。 我怎样才能把它设置到我的设备?
我知道如何在我的Android设备上获取服务器时间。 是否可以实时,特别是在Android?
- 服务器时间自动设置到我的设备上我的button单击事件。
如果你有正确的许可(见下文),你可以用AlarmManager
来做到这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/
文件夹
除非你build立自定义的ROM,否则第一个就不好运气。
第二,这取决于你在做什么。
-
如果您正在构build广泛分发的应用( Google Play等),则可能不应该这样做。 这只是root用户的一个选项,你只能手动安装。 任何市场都不会将其安装到正确的位置。
-
如果你正在为自己构build一个应用程序(或者只是一个学习练习),那就去做吧。 不过,你需要一个根深蒂固的手机,所以先做。 然后,您可以使用ADB或文件pipe理器将应用程序直接安装到
/system/app/
。 看到这样的文章更多的细节。
最后一个注意事项:在Android 2.2( API 8
)中添加了SET_TIME
权限和AlarmManager#setTime()
)。 如果你想在以前的版本上做这个,我不确定它会起作用。
尝试这个:
你可以使用下一个命令:
adb shell date -s YYYYMMDD.HHmmss
例:
adb shell date -s 20120423.130000
将date设置为2012年4月23日星期一13:00:00
或者你也可以试试这个:
startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));
希望它帮助!
简答:
如果您计划在appstore中创build应用程序,或者将时间更新为服务器时间, 则无法执行此操作。
您需要SignatureOrSystem权限才能根据服务器更改时间date。
您可能必须对您的设备进行根目录 ,然后执行更改。
这个线程应该会帮助你很多,以更好地理解它。
我已经做了两个星期完全相同,现在我得到了一个根植设备的解决scheme
- 获取服务器时间
<?php echo date("Ymd.His "); ?>