android设置日期时间,如何在android中设置移动系统的时间和日期?

1c10ea43daf42076ceff0f012956915c.png

慕容708150

您无法使用普通的现成手机,因为无法获得SET_TIME权限。此权限拥有的ProtectionLevel的signatureOrSystem,所以没有办法对市场的应用程序更改全局系统时间(但也许有黑色vodoo魔法我还不知道)。您无法使用其他方法,因为这在Linux级别上被阻止了(请参阅下面的长答案) - 这就是为什么所有使用终端和SysExecs的试验都会失败的原因。如果您可以获得许可,或者因为您拥有手机,或者构建并签署了自己的平台图像,请继续阅读。简答这是可能的,并已完成。你需要android.permission.SET_TIME。然后使用AlarmManagervia Context.getSystemService(Context.ALARM_SERVICE)和它的方法setTime()。用于将活动或服务的时间设置为2010/1/1 12:00:00的代码段:Calendar c = Calendar.getInstance();c.set(2010, 1, 1, 12, 00, 00);AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);am.setTime(c.getTimeInMillis());如果要更改时区,则方法应该非常相似(请参阅android.permission.SET_TIME_ZONE和setTimeZone)答案很长正如在多个线程中指出的那样,只有system用户才能更改系统时间。这只是故事的一半。SystemClock.setCurrentTimeMillis()直接写入缺少世界可写权限/dev/alarm所拥有的设备文件system。换句话说,只有运行的进程system可以使用该SystemClock方法。对于这种方式,android权限无关紧要,没有涉及实体检查适当的权限。这是内部预安装的设置应用程序的工作方式。它只在system用户帐户下运行 。对于镇上的所有其他孩子,都有警报管理员。这是一个系统服务,在system_server- 猜测什么 - system用户帐户下运行。它公开了上述setTime方法,但强制执行SET_TIME权限,反过来只是SystemClock.setCurrentTimeMillis内部调用(由于警报管理器正在运行的用户而成功)。~~~干杯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值