在Android 5.1系统中,通常给应用开放系统权限的方法是直接将该应用设置为系统应用,即在应用的AndroidManifest.xml文件中添加android:sharedUserId="android.uid.system"。然而,这种方式限制了应用的自由,因为经过系统签名后的系统应用只能在对应的Android平台上安装使用,无法兼容所有Android设备。此外,这也导致应用无法像其他应用一样发布到Android市场中。 为了在不影响应用兼容性的前提下解决应用调用系统层接口时遇到的权限问题,可以采取一种通过修改Android平台系统层代码的方法。具体而言,是在ActivityManagerService的startProcessLocked接口中将应用的用户ID(uid)和用户组ID(gid)都修改为0。在Android系统中,uid和gid为0代表的是root用户,拥有系统级最高权限。 具体操作步骤如下: 1. 应用需要被安装在设备上。应用一旦安装并点击启动,系统会通过ActivityManagerService的startProcessLocked接口来启动应用的新进程。 2. 在startProcessLocked接口中,需要对特定的应用包名修改uid和gid。例如,如果需要开放系统权限的应用包名是net.forclass.fcstudent、com.ckl.launcher、com.creative.fcstudent或com.hampoo.hampoointerfacetestdemo,则需要对这些包名进行特殊处理。 3. 修改uid和gid的代码片段通常在ActivityManagerService.java文件中,路径为frameworks/base/services/core/java/com/android/server/am/。在startProcessLocked方法中,可以根据条件判断应用的包名,如果是需要开放权限的包名之一,则将info.uid设置为0。 示例代码如下: ```java final ProcessRecord startProcessLocked(String processName, ApplicationInfo info, boolean knownToBeDead, int intentFlags, String hostingType, ComponentName hostingName, boolean allowWhileBooting, boolean isolated, int isolatedUid, boolean keepIfLarge, String abiOverride, String entryPoint, String[] entryPointArgs, Runnable crashHandler) { // 开始修改 if ("net.forclass.fcstudent".equals(info.packageName) || "com.ckl.launcher".equals(info.packageName) || "com.creative.fcstudent".equals(info.packageName) || "com.hampoo.hampoointerfacetestdemo".equals(info.packageName)) { info.uid = 0; } // 结束修改 // ...省略其他代码... } ``` 4. 在startProcessLocked方法中,还应该修改gid为0。这通常是在startProcessLocked方法的重载版本中完成,该方法会再次调用startProcessLocked接口,这次调整gid。 5. 在修改过程中,应确保不要直接修改系统文件,而是通过在系统中安装一个覆盖或修改后的ActivityManagerService.jar文件来实现。这样做的好处是,如果将来需要恢复原始设置,只需替换回原始的jar文件即可。 需要注意的是,将应用设置为系统级权限是一种高风险的操作,如果操作不当,可能会对系统稳定性和安全性造成严重影响。因此,这类操作通常只适合于有经验的开发者和高级用户,并且在进行此类修改之前,必须确保已经取得了设备的root权限,并且已经对数据进行了完整的备份,以防止任何不可预见的错误导致数据丢失。 本文所介绍的这种方法只适用于已经获取root权限的Android设备,因为非root用户没有权限去修改系统层的代码。同时,该方法也只在Android 5.1版本上进行了测试,其他版本的Android系统可能需要不同的修改方式。



























- 粉丝: 8
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 《网络新世界》教案道德与法治教案1.pdf
- 学习linux心得体会.docx
- 互联网创业计划书.pptx
- excel函数总结.docx
- 江苏自考项目管理真题试卷.doc
- 学案从杂交育种到基因工程.pptx
- 项目管理人员暂时管理方法(记忆).doc
- 二手车市场综合网站建设方案.doc
- 银行网络故障应急处理预案.doc
- 基于OPC通讯协议的自动化仿真平台-实践篇.doc
- 2023年湖南科技大学计算机学院科普知识竞赛初赛题目的答案.doc
- 汽车经销商四S店网络营销电话销售手册.pptx
- 计算思维和计算机基础专业知识讲座.ppt
- 国美电子商务战略规划分析.pptx
- 西门子Modbus-RTU通信.docx
- 网络经济下供应链管理模式的创新与构建.doc


