如何编辑AndroidManifest.xml为下载应用授予SD卡写入权限(KitKat系统)
Android 4.4 KitKat 授予第三方应用SD卡写入权限方案
权限不生效核心原因
Android 4.4 对外部存储权限逻辑做了大幅修改,单独声明WRITE_EXTERNAL_STORAGE权限默认仅能写入SD卡下的应用专属目录Android/data/[应用包名]/,无法写入SD卡其他公共路径,这是系统层级的权限限制。
编辑APK的AndroidManifest配置操作
你需要先解包目标APK,找到AndroidManifest.xml文件做如下修改:
- 除原有
WRITE_EXTERNAL_STORAGE权限声明外,新增KitKat专属的媒体存储写入权限WRITE_MEDIA_STORAGE,示例代码如下:
<!-- 原有存储权限保留 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 新增KitKat专属SD卡写入权限 --> <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
- 如需获取全卡读写权限,可在
manifest根节点添加共享用户ID配置:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="你的应用包名" android:sharedUserId="android.uid.media">
注意:添加sharedUserId后应用会被识别为媒体进程,原有应用数据会丢失,修改完成后必须重新对APK签名才能安装。
Root设备补充配置(必做,否则Manifest修改不生效)
仅修改APK配置无法突破系统权限限制,已Root设备还需要修改系统配置:
- 用Root文件管理器打开路径
/system/etc/permissions/platform.xml - 找到
WRITE_EXTERNAL_STORAGE权限的定义节点,新增media_rw用户组配置,修改后如下:
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" > <group gid="sdcard_r" /> <group gid="sdcard_rw" /> <group gid="media_rw" /> </permission>
- 保存修改后重启设备,重新安装修改后的APK即可获得全SD卡写入权限。
内容的提问来源于stack exchange,提问作者dsfsfkjdkldsjfklkjkl
相关产品推荐
相关产品推荐

