如何以编程方式设置时间到设备

我创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

  1. 获取服务器时间
 <?php echo date("Ymd.His "); ?>