这几天主要研究了关于android 下system权限是如何获取的的问题
因为我们如果想要读取访问/data/目录 或者是/data/data/com.android.settings下的设置来访问系统的设置,如时间的设置功能的话我们必须提供system权限才能进入
在网上查阅到这类的资料已经很多了,现在简单总结概括以下关于利用android.sharedUserId="android.uid.system"来获取android 下system权限的方法.
首先在Android源码目录中找到(位置 是"build\target\product\security"),下面的platform.pk8和platform.x509.pem两个文件,将其拷贝出来,例如我这里在D盘下建立一个文件夹"sign",将platform.x509.pem platform.pk8和signapk.jar文件放到这个文件夹(signapk.jar文件点此下载,下载后将后缀名改为jar)
1、在你的工程中的AndroidManifest文件下的manifest标签下添加android:sharedUserId="android.uid.system"
2、在你的工程中的bin目录下拷贝build好的apk文件到我们刚刚建立的sign文件夹,然后用Winrar文件打开apk文件,进入META-INF目录下,删除CERT.SF和CERT.RSA这两个文件,然后在DOS下用cd命令进入sign目录且输入命令
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk其中old.apk为你原来的apk文件,即删除了CERT.RSA和CERT.SF这两个文件的apk文件,new.apk为执行这条命令后你想要生成的apk的名称
3、现在你的new.apk应用程序已经获得了system权限,将新生成的new.apk安装到模拟器,可以访问/data/目录了
总结:在获取到system权限后,能访问/data/目录下的内容,但是却不能访问sdcard.