A罩杯 发表于 2013-8-28 16:28

#APKBUS#说说关机的那些事(一)

8   前两天本人的妹妹qq空间留言说让我做一个定时关机的应用给她用,同时又有同班的女童鞋留言回复说也想要一个,顿时我斗志十足啊!于是我去论坛百度了一下。。。   
   直接说结果吧!   
   目前有两种解决办法实现关机功能:   
先说第一种,感觉第一种是最简单实现的,调用系统隐藏的API!   
                                                                     
                                                                  Intent intent =Intent(Intent.ACTION_REQUEST_SHUTDOWN);                                                                  intent.putExtra(Intent.EXTRA_KEY_CONFIRM, );                                                                  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库导入到你的工程中。记住要把这个库放在前面!!!   
   
你以为这样就可以了?   
   
你错了,这才是第一步,关机还需要一个权限声明:   
但是加上了这个权限只后就会报错,说你不是系统软件,不可以有这个权限!!!好吧!让我扮演一下系统软件吧!(为软件提升权限)   
   
   
<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.jarplatform.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,第一种方法就先说到这吧!(以上内容均来自百度,本人只是稍作总结,本人才大三,也是第一次发帖,各位多捧场!)   
   
   
   
   
   
页: [1]
查看完整版本: #APKBUS#说说关机的那些事(一)