第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:

  1. 在应用程序的AndroidManifest.xml中的manifest节点中加入

  android:sharedUserId="android.uid.system"这个属性。

  2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform这一行

  3. 使用mm命令来编译,生成的apk就有修改系统时间的权限了。

  第二个办法麻烦点,不过不用开虚拟机跑到源码环境下用make来编译:

  1. 同上,加入android:sharedUserId="android.uid.system"这个属性。

  2. 使用eclipse编译出apk文件,但是这个apk文件是不能用的。

  3. 用压缩软件打开apk文件,删掉META-INF目录下的CERT.SF和CERT.RSA两个文件。

  4. 使用目标系统的platform密钥来重新给apk文件签名。这步比较麻烦,

  首先找到密钥文件,在我的Android源码目录中的位置

  是"build        argetproductsecurity",下面的platform.pk8和platform.x509.pem

  两个文件。

  然后用Android提供的Signapk工具来签名,signapk的源代码是

  在"build        oolssignapk"下,

  用法为"signapk platform.x509.pem platform.pk8 input.apk output.apk",

  文件名最好使用绝对路径防止找不到,也可以修改源代码直接使用。

  这样最后得到的apk和第一个方法是一样的。

  最后解释一下原理,首先加入android:sharedUserId="android.uid.system"这个属性。通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样就有权限来修改系统时间了。

  只是加入UID还不够,如果这时候安装APK的话发现无法安装,提示签名不符,原因是程序想要运行在系统进程中还要有目标系统的platform

key,就是上面第二个方法提到的platform.pk8和platform.x509.pem两个文件。用这两个key签名后apk才真正可以放入系统进程中。第一个方法中加入LOCAL_CERTIFICATE := platform其实就是用这两个key来签名。  这也有一个问题,就是这样生成的程序只有在原始的Android系统或者是自己编译的系统中才可以用,因为这样的系统才可以拿到 platform.pk8和platform.x509.pem两个文件。要是别家公司做的Android上连安装都安装不了。试试原始的Android 中的key来签名,程序在模拟器上运行OK,不过放到G3上安装直接提示"Package ... has no signatures that match those in shared user android.uid.system",这样也是保护了系统的安全。  最最后还说下,这个android:sharedUserId属性不只可以把apk放到系统进程中,也可以配置多个APK运行在一个进程中,这样可以共享数据,应该会很有用的。

Android 应用程序获得系统权限相关推荐

  1. 如何使Android应用程序获取系统权限来修改系统时间

    在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中 ...

  2. 通过apk签名使应用程序有系统权限

    问题: 系统预装软件,需要访问一些配置文件,配置文件的owner都是设置为system.所以应用程序需要有授权才可以读写. google搜索找到以下文章,解决了这个问题. 以下内容解释了: andro ...

  3. Android应用程序获得root权限

    我在博文<Android程序的安全系统>中提到两种让root权限的办法.最近在网上发现很多朋友转载那篇文章,但是对那篇文章中提到的第一种方法怎样实现,不是很明白.本文将会以一个例子实现来演 ...

  4. android应用程序永久获取root权限方法,怎么使Android应用程序获得root权限

    一般来说, Android 下的应用程序可以逗直接地得到的最大的权限为 system ,但是如果我们需要在程序中执行某些需要 root 权限的命令,如 ifconfig 等,就需要 root 权限了. ...

  5. android系统应用程序设置时间,Android应用程序设置系统时间的方法

    Android应用程序获取系统时间的方法: System.currentTimeMillis(); Android SDK虽然提供了设置系统时间的方法SystemClock.setCurrentTim ...

  6. Android应用程序获得root权限 基于NVidia平台Android应用修改cpu频率

    问题和目标       有时候希望在java应用程序中来使用root权限,如修改/system权限,亦或者如题. 思路和原理       这里介绍2种我已经实现的方法,但是建议使用第2种,因为第2种适 ...

  7. 如何使Android应用程序获得root权限

    写这篇文章前,首先要感谢Simon_fu,他的两篇关于root权限的文章对于我的工作起到了非常大的帮助,这篇文章可以说是对他的文章的一个补充.Simon_fu的文章可以参考如下两个网页: Androi ...

  8. Android安卓程序开发的权限设置

    在AndroidManifest.xml文件中添加限设置 <!-- 读联系人权限 --> <uses-permission android:name="android.pe ...

  9. 转:Android中如何修改系统时间(应用程序获得系统权限)

    在 android 的API中有提供 SystemClock.setCurrentTimeMillis()函数来修改系统时间,可惜无论你怎么调用这个函数都是没用的,无论模拟器还是真机,在logcat中 ...

  10. 应用需要android权限,如何找出android应用程序需要的权限

    how can i find out which permissions i need to add in manifest for my applications? 有时,会记录权限,例如JavaD ...

最新文章

  1. 看看人家 SpringBoot 的全局异常处理多么优雅...
  2. 【堆栈应用一】一个数divided=几个最小质因数的乘积
  3. openjudge基础题3计算书费
  4. EOS 连接同步主网
  5. day20 Python 高阶函数,函数,嵌套,闭包 装饰器
  6. FileSystemObject详解
  7. 好程序员大数据教学点睛:Hadoop基础篇
  8. WeBack(微信聊天记录导出)使用教程
  9. Linux 命令行常用快捷键
  10. 弹性板计算和板带划分计算_彻底搞懂板带的配筋及范围
  11. 《操作系统》课程设计任务书
  12. c#通讯录管理系统(女朋友版本)
  13. 谷歌浏览器 无法翻译此网页的解决方法
  14. 数值分析笔记(一):方程求根
  15. python回测代码_python实现马丁策略回测3000只股票的实例代码
  16. 计算机网络运输层的简单总结与思考
  17. L2范数-欧几里得范数
  18. HTML+CSS+JS大作业:商城网购网站设计——淘宝1页
  19. python 项目架构设计
  20. perror和strerror的使用和区别

热门文章

  1. Debian 9 Stretch国内常用镜像源
  2. 【树莓派】在树莓派的Android系统中安装APK应用
  3. 大数据处理方面的 7 个开源搜索引擎
  4. URlRewriter组件下载及使用说明
  5. 感谢你遇到的问题(2)
  6. GetPrivateProfileString的问题,获得的CString结构有问题,高手指点
  7. EXCHANGE服务器一些常用的邮件限制方法笔记
  8. 「代码随想录」518. 零钱兑换 II 【动态规划】力扣详解!
  9. poj 3660 Cow Contest floyd 传递闭包!!基础
  10. 在 Mac 上如何获取扩展来自定 Safari 浏览器?