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

我创建了一个应用程序,用服务器时间替换当前显示时间。 我已经尝试了很多,但我找不到解决方案。 如何将其设置为我的设备?

我知道如何在我的Android设备上获得服务器时间。 是否可以实时,特别是在Android上?

  • 服务器时间在我的按钮单击事件中自动设置为我的设备。

如果您拥有正确的权限(见下文),则可以使用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中的定义:

    

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

  • 与系统映像签名
  • 安装到/system/文件夹

除非你构建自定义ROM,否则第一个就不行了。

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

  • 如果您正在构建广泛分发的应用( Google Play等),您可能不应该这样做。 它只是root用户的一个选项,您只能手动安装它。 任何市场都不会将其安装到正确的位置。

  • 如果您正在为自己构建应用程序(或仅作为学习练习),那就去吧。 但是,你需要一个有根的手机,所以先做。 然后,您可以使用ADB或文件管理器将应用程序直接安装到/system/app/ 。 有关详细信息,请参阅此类文章。


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

尝试这个:

您可以使用下一个命令:

 adb shell date -s YYYYMMDD.HHmmss 

例:

 adb shell date -s 20120423.130000 

将日期设定为2012年1月23日13:00:00

或者您也可以试试这个:

 startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS)); 

希望能帮助到你!!

简答:

如果您计划在appstore中安装应用程序,或者将时间更新为服务器时间, 则无法执行此操作。

您需要SignatureOrSystem权限才能根据服务器更改时间日期。

您可能必须root设备 ,然后实施更改。

这个post应该帮助你很多,以便更好地理解它。

我已经做了两个星期的完全相同,现在我得到了一个带有root设备的解决方案

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