A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhaopy 中级黑马   /  2015-6-10 22:30  /  313 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

前两天本人的妹妹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,第一种方法就先说到这吧!



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马