Android(安卓)如何使Android应用程序获取系统权限
前言
欢迎大家我分享和推荐好用的代码段~~
声明
欢迎转载,但请保留文章原始出处:
CSDN:http://www.csdn.net
雨季o莫忧离:http://blog.csdn.net/luckkof
正文
在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要signatureOrSystem等级的permission才能使用。有两种方法可以处理,来得到系统权限。
第一个方法直接修改编译,需要在Android系统源码的环境下用make来编译:
1. 在应用程序的AndroidManifest.xml中的manifest节点中加入android:sharedUserId="android.uid.system"这个属性。
2. 修改它的Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行
3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。
第二个方法使用系统签名文件来处理:
1. 同上,和系统相同的uid. Android 的系统用户id是android.uid.system , 在Manifest里面添加android:sharedUserId="android.uid.system"。
2. 相同的系统签名。包签名需要用到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提示错误是一样的。
更多相关文章
- android程序目录结构及分析
- Android(安卓)安全机制
- 在android上使用valgrind检测内存泄漏
- linux系统和android系统的区别
- androidstudio搭建flutter环境,遇到的问题
- android 中遥控器键值的添加和修改
- Android系统中UID
- Android公共库(缓存,下拉ListView,下载管理,Pro 静默安装,root运
- 高通平台android 环境配置编译及开发经验总结【转】