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

San*_*hah 26 datetime android

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

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

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

Geo*_*its 64

如果您拥有正确的权限(见下文),则可以使用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());
Run Code Online (Sandbox Code Playgroud)

您需要获得许可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" />
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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


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

  • 您将始终获得此安全性异常,因为即使您在清单中请求了"android.permission.SET_TIME",系统**也不会授予您的应用程序此权限,除非它是系统应用程序**.基本上,简而言之,除非您有根电话或自己的自定义ROM,否则无法在设备上设置时间.期.故事结局. (8认同)

Arm*_*ger 11

试试这个:

您可以使用下一个命令:

adb shell date -s YYYYMMDD.HHmmss
Run Code Online (Sandbox Code Playgroud)

例:

adb shell date -s 20120423.130000
Run Code Online (Sandbox Code Playgroud)

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

或者您也可以试试这个:

startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!!

  • 请注意,"adb"工具无法从设备自身使用,至少除非您有异常设备,或者已经在USB主机上使用adb将设备从USB模式切换到TCP模式.虽然此处使用的命令与adb是shell命令,但应用程序代码无法以具有足够权限的用户身份运行它们. (3认同)

JNL*_*JNL 5

简短答案:

不能做到这一点,如果您计划在AppStore您的应用程序,或者更新的时间服务器时间。

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

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

线程应该对您有很大帮助,以便更好地理解它。