如何使Android应用程序获取系统权限 来修改系统时间

本文介绍了解决Android中使用setCurrentTimeMillis方法修改系统时间的权限问题的方法。包括设置相同的uid、包签名及编译签名步骤,并提供了一个可行的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天搞了setCurrentTimeMillis 不能修改时间的问题。不甘心今天上午又搞上了。

主要原因是因为SystemClock的setCurrentTimeMillis 的permission是signatureOrSystem等级的,直接使用user-permission没有作用。需要做两方面的事情:

一方面是相同的uid. Android 的系统用户id是android.uid.system , 在Manifest里面添加android:sharedUserId="android.uid.system"。

二方面是相同的包签名。包签名需要用到android提供的signapk,但很遗憾,我们的开发包里面并没有,需要您手动的从源码里面编译,在2.2的版本中,源码路径是:froyo\build\tools\signapk。
在附件中我已经编译好了。然后从源码路径froyo\build\target\product\security中取出两个系统签名文件platform.pk8 and platform.x509.pem.
就可以对eclipse编译好的apk签名了,(注: 编译好的apk在bin目录下)。形式是:
Java –jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk.

完成这两部后,在运行之前,您还要从模拟器上卸载掉原来的相同程序,因为签名改了,不然会报错不能安装。

安装完后您就可以使用了。

对于在模拟器上进行setCurrentTimeMillis 虽然我们能够修改模拟器的时间了,这个方法的返回值仍然是false, 可能是不能真正的修改系统的时钟吧。在Log中的提示是:

08-16 08:29:24.307: WARN/SystemClock(125): Unable to set rtc to 1281918564: Invalid argument.

这个和android模拟器里面自带的setting里面的修改时间Log提示错误是一样的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值