黑马程序员技术交流社区
标题: Android关机的那些事 [打印本页]
作者: zhaopy 时间: 2015-6-10 22:30
标题: Android关机的那些事
前两天本人的妹妹qq空间留言说让我做一个定时关机的应用给她用,同时又有同班的女童鞋留言回复说也想要一个,顿时我斗志十足啊!于是我去论坛百度了一下。。。
直接说结果吧!
目前有两种解决办法实现关机功能:
先说第一种,感觉第一种是最简单实现的,调用系统隐藏的API!
Intent intent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
intent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
就是这么几句话了,但是实际写一下就会发现,貌似没有这个权限~!这就是隐藏的权限啦!
那么怎么使用隐藏API呢?
使用源码编译时生成的全编译的jar包classes.jar
编译Android框架源码后,在源码路径下会生成out文件夹,在这个文件夹下的out"target"common"obj"JAVA_LIBRARIES"framework_intermediates"路径下,会生成全编译的jar库classes.jar。你需要做的就是将这个jar库导入到你的工程中。记住要把这个库放在前面!!!
你以为这样就可以了?
你错了,这才是第一步,关机还需要一个权限声明:android.permission.SHUTDOWN
但是加上了这个权限只后就会报错,说你不是系统软件,不可以有这个权限!!!好吧!让我扮演一下系统软件吧!(为软件提升权限)
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
……
android:sharedUserId="android.uid.system"
……
>
这样就OK了!
下面就剩下最后一步了,什么?你以为这样就可以了?这样是不可以直接安装调试,会报出签名错误!
虽然不能运行,但是可以生成APK,先生成APK,待用。。。
得到生成的APK之后用压缩软件解压,把META-INF目录中的CERT.SF、CERT.RSA 两个文件删除。使用android自带的签名工具signapk.jar 以及源码中的platform.x509.pem,platform.pk8 对apk进行重新签名。在cmd下
执行:java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk 执行后new.apk即为签名后的文件。
(注:执行命令时所有文件这里放在同一目录下,如果不在同一目录请修改路径)。
文件platform.x509.pem和platform.pk8我们可以在源码的 build/target/product/security中找到。signapk.jar 可以编译build/tools/signapk/ 得到。
然后就可以了!!!
但是不要高兴的太早,这样生成的APK只能适用某些系统(与 你是用的相应系统的platform.x509.pem和platform.pk8 文件有关 )我用安卓原生系统的platform.x509.pem和platform.pk8 文件生成APK,在小米上就不好使。ok,第一种方法就先说到这吧!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |