Android5.1第三方APP对SD卡没有写权限
背景
- Platform: IMX6Q
- OS: Android5.1
- Kernel: 3.14.52
android5.1第三方APP对SD卡没有写权限:
http://blog.csdn.net/peng_cao/article/details/50508700
在Android kk版本之后(4.4, 5.0, 5.1, 6.0…);一般的应用程序(APP)是无法访问(读/写)外置SD卡的;仅仅只有系统级别的并且使用系统签名的APP可以访问外置SD卡
在AndroidManifest.xml
中添加android.permission.WRITE_MEDIA_STORAGE
在Android.mk
中添加LOCAL_CERTIFICATE := platform
不要在AndroidManifest.xml中添加share System UID 添加android.sharedUserId="android.uid.system"
第三方APP只能访问外置SD卡的应用程序目录,例如:*Android/data/com.example.foo/
系统APP只有使用了系统签名(platform certification)并且在AndroidManifest.xml
声明了权限;才可以访问外置SD卡。
详细信息请参考(需要访问 android.com)Android Storage
主要问题点:
WRITE_EXTERNAL_STORAGE权限是用来控制对主外置存储的写入的,APP是无法获得外置SD卡的写入权限的,除去SD卡中的APP目录(*Android/data/com.example.foo/
),这样可以确保APP在卸载的时候可以删除对应目录
解决APP访问外置SD卡的方案:
修改/frameworks/base/data/etc/platform.xml
<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_rw" />
<group gid="media_rw" /> // Add this line ,the WRITE_MEDIA_STORAGE permission to the WRITE_EXTERNAL_STORAGE permission, so apps do not experience the described problem.
</permission>
在AndroidManifest.xml
中加入android.permission.WRITE_MEDIA_STORAGE
注意:
此修改可能导致CTS无法通过
#remount,rw /dev/block/mmcblk2p1 /mnt/media_rw/extsd/