android程序获得系统权限的办法

平时编写的android程序属于第三方的应用程序,没有设计到修改系统,最多引用系统信息,今天要自定义一个时间设置需要用到系统权限,在网上学习之后,mark一下。

本文参考了


此昵称已经存在吗的Android系统权限和root权限


1.要活得系统权限,在完成程序的编写后,在配置文件AndroidManifest.xml中加入android:sharedUserId="android.uid.system,如下文

    package="com.example.date"
    android:versionCode="1"
    android:versionName="1.0" 
    android:sharedUserId="android.uid.system">

加入这句命令,告诉系统需要权限,但并没有给系统权限,下面两种是大家用到的比较多的办法:

第一种:

需要在linux环境下完成,而且是编译android源码的环境下,修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行,使用mm命令来编译,生成的apk就有修改系统时间的权限了(这个我没有操作)。

第二种

不需要在源码环境下,但还是要求你有android的源码,而且我第一次弄的时候还是跑到linux底下了。

使用eclipse编译出apk文件。使用目标系统的platform密钥来重新给apk文件签名。首先找到密钥文件,在我

android源码目录中的位置是"build/target/product/security",

下面的platform.pk8和platform.x509.pem两个文件。然后用Android提供的Signapk工具来签名,signapk的源代码是在

"build/tools/signapk"下,

编译后在out/host/linux-x86/framework下,用法为

java -jar signapk.jar platform.x509.pem platform.pk8 input.apk output.apk"。

这里注意一下,好多人都直接说编译,让小白很难受啊,我说详细点,就是在linux环境下,去到"build/target/product/security",是一个.java文件,我用的javac编译通过,但也提示了一堆东西没有"javac SignApk.java"。我用mm来编译,死活不成功,提示/usr/bin/mm没有那个文件或目录。

这里再说一下,因为这里是对apk进行操作的,所以不用IDE的debug来调试,如果没有提前在path里面设置环境变量的话,可以到android的sdk目录platform-tools里有adb,用cmd命令窗来定位,然后执行adb install  yourapkname.apk。如果不是第一次安装,建议把之前的卸载,再安装

你可能感兴趣的:(android程序获得系统权限的办法)