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  
但是加上了这个权限只后就会报错,说你不是系统软件,不可以有这个权限!!!好吧!让我扮演一下系统软件吧!(为软件提升权限)


< manifest xmlns: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://www.apkbus.com/forum.php?mod=viewthread&tid=110120


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值