我创建了一个应用程序,用服务器时间替换当前的显示时间。我已经尝试了很多,但我找不到解决方案。如何将其设置为我的设备?
我知道如何在我的Android设备上获得服务器时间。是否可以实时,特别是在Android上?
答案 0 :(得分:60)
如果您拥有正确的权限(请参阅下文),则可以使用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
权限。
<!-- 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/
文件夹除非您构建自定义ROM,否则第一个就不行了。
第二,这取决于你在做什么。
如果您要构建广泛分发的应用(Google Play等),您可能不应该这样做。它只是root用户的一个选项,您只能手动安装它。任何市场都不会将其安装到正确的位置。
如果你正在为自己构建一个应用程序(或者只是作为一个学习练习),那就去吧。不过,你需要一部扎根手机,所以先做。然后,您可以使用ADB或文件管理器将应用程序直接安装到/system/app/
。有关详细信息,请参阅文章like this。
最后一点说明:Android 2.2(SET_TIME
)中添加了AlarmManager#setTime()
权限和API 8
。如果您尝试在以前的版本上执行此操作,我不确定它是否会起作用。
答案 1 :(得分:11)
试试这个:
您可以使用下一个命令:
adb shell date -s YYYYMMDD.HHmmss
示例:
adb shell date -s 20120423.130000
将日期设置为2012年4月23日星期一13:00:00
或者你也可以试试这个:
startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));
希望它能帮助!!
答案 2 :(得分:4)
如果您计划在appstore中安装应用,或者将时间更新为服务器时间,则无法执行此操作。
您需要SignatureOrSystem权限才能更改时间 根据服务器的日期。
您可能必须 root您的设备,然后实施更改。
此thread 应该对您有所帮助,以便更好地理解它。
答案 3 :(得分:1)
我已经完成了相同的两周,现在我得到了一个带有root设备的解决方案
<?php echo date("Ymd.His "); ?>
&#13;
在onClick方法
中 Process loProcess = Runtime.getRuntime().exec("su");
DataOutputStream loDataOutputStream = new DataOutputStream(loProcess.getOutputStream());
//loDataOutputStream.writeBytes("date -s 20120419.124012; \n");
loDataOutputStream.writeBytes("date -s" + theStringReturnedValue+ "; \n");
请注意,theStringReturnedValue必须具有此格式20150216.124012,这与php中返回的格式相同