2013-06-05 45 views
6

我尝试一些与Android的东西,因为我正在学习Android开发,现在我有一个场景在这里。更改Android手机的系统日期按钮点击从Android应用程序

  • 我想通过我的应用程序来改变android手机的系统日期(首先,我想知道的是,这是可行的?

布局是如下

layout

现在我想要的是当用户点击按钮日期应该增加20天 我该怎么做。

我无法启动......请帮助

+0

你有什么尝试,你不会无法启动?你能提供更多信息吗? – JustWork

+0

无法启动,我不知道,我不知道如何获取系统日期并通过我的应用程序进行更改。什么内置的类提供了功能来获取和设置系统日期 –

+0

当你按下按钮时,你想改变移动日期? – Blackbelt

回答

4

在Android上,一个应用程序确实有时间&日期是让SET_TIME许可,这是唯一可能的“应用程序写访问的唯一途径这些文件位于Android系统映像中,或者使用与声明权限的应用程序相同的证书进行签名。“ (见signatureOrSystem protection level)。

您的应用程序达到此保护级别的唯一方法是在根设备上运行,或者构建并签署您自己的android rom。

如果这是你的情况,你可以很容易地使用AlarmManager或简单的Calendar实例。

祝你好运!

+0

我认为除了在根设备上运行它还有更多。我在一个扎根的Nexus 7上运行我的应用程序,尽管我可以通过GPS信号(智能GPS时间,像冠军一样工作)来设置应用程序的时间,但我的代码在尝试时立即崩溃。任何想法缺少什么? – Rich

7

正如我已经说过那是不可能的。您需要SET_TIME权限,并且该权限仅由系统授予Android系统映像中的应用程序。如果您能够获得该特权,则可以使用AlarmManager轻松更改。 SystemClock.setCurrentTimeMillis写的/ dev/allarm文件

adb shell ls -l /dev/alarm 
crw-rw-r-- system radio  10, 46 2013-06-12 10:46 alarm 
  • c停留Character special file (stored in /dev).
  • 系统是文件
  • 无线电的所有者的组

系统和无线电已经阅读并写权限(rw-,树位,int值6),其他只有读权限(r,int值4)。所以文件的权限是664。如果您可以获得root用户(运行su),则可以更改此文件的权限并在其中写入新值。已经填写了一个错误报告,要求谷歌允许应用程序以编程方式修改移动日期,但它已被拒绝。 Here参考

+1

不错的exaplanation。您需要根据设备获取超级用户访问权限。 + 1 – Raghunandan

0

普通用户应用程序没有权限更改设备时间。通过following post中的cashbash为替代选项阅读答案。

0

不幸的是,黑带是正确的; android让我们做了很多很酷的事情,但以编程方式更改系统时间并不是其中之一。

因为我看到你正在寻找更可信的/官方的消息来源,我建议你检查一下this open ticket with Google,这表明这是一个开放的问题 - 它应该工作,但不是,它似乎并不谷歌很快就会解决它。它的要点是SET_TIME保护级别设置得比它应该高。 (有关权限的更多信息,请参见here

虽然这与以编程方式更改时间并不完全相同,但如果由于某些原因需要系统时间,则仍然可以让用户更改系统时间改变。 This thread将解释如何去执行,如果你想要走这条路。

希望这是有用的信息!

相关问题