Android对外置sd卡的权限问题(上)
2016-06-30 11:44
351 查看
作者:许勇权
在调查图库中关于在内外存置卡之间移动/复制操作时,写了一个小程序测试在内外存储卡操作的可行性和性能问题,发现第三方应用无法访问外置存储卡。
调查后得知,在2.x的版本中,android手机只有/data/目录用于存放第三方应用和应用内部数据,在manifest中配置的权限“android.permission.WRITE_EXTERNAL_STORAGE”确实是用来使得sd卡获得写的权限。
但从4.0以后,android有了内外存储卡之分,很多手机加入了内部存储卡,部分手机保留了sd卡接口,于是上述权限只能用于访问内置存储卡,正常情况下,用户只对外置存储卡的android/data/[packagename]目录具有访问权限,用户要访问外部存储卡,需要加入”android.permission.WRITE_MEDIA_STORAGE”权限。
然而问题来了,加入该权限后,提示该权限只对系统应用起作用,(Permissionis only granted to system apps)。还好我就是系统应用,加入权限,修改为系统签名后,访问外置存储卡测试ok。
问题到这里貌似可以解决了,添加WRITE_MEDIA_STORAGE权限,修改为系统签名,可以对外置存储卡获得完全权限,但追根究底,第三方应用如何获取对外置存储卡的读写权限,于是继续百度,有一个方案是,可以修改/system/etc/permissions,,添加media_rw的权限,如下所示
<permissionname="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_r"/>
<group gid="sdcard_rw"/>
<group gid="media_rw"/>
</permission>
然而对于没有root的手机来说,该方法并不可行,pass。
接着,想到第三方文件管理工具可否访问sd卡,安装了es文件管理器,在sd卡创建文件,出现如下提示
![](http://img.blog.csdn.net/20160630114517073?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
按照图示操作,果然可以访问sd卡,但到底是为什么,时间问题,下回分解吧。
在调查图库中关于在内外存置卡之间移动/复制操作时,写了一个小程序测试在内外存储卡操作的可行性和性能问题,发现第三方应用无法访问外置存储卡。
调查后得知,在2.x的版本中,android手机只有/data/目录用于存放第三方应用和应用内部数据,在manifest中配置的权限“android.permission.WRITE_EXTERNAL_STORAGE”确实是用来使得sd卡获得写的权限。
但从4.0以后,android有了内外存储卡之分,很多手机加入了内部存储卡,部分手机保留了sd卡接口,于是上述权限只能用于访问内置存储卡,正常情况下,用户只对外置存储卡的android/data/[packagename]目录具有访问权限,用户要访问外部存储卡,需要加入”android.permission.WRITE_MEDIA_STORAGE”权限。
然而问题来了,加入该权限后,提示该权限只对系统应用起作用,(Permissionis only granted to system apps)。还好我就是系统应用,加入权限,修改为系统签名后,访问外置存储卡测试ok。
问题到这里貌似可以解决了,添加WRITE_MEDIA_STORAGE权限,修改为系统签名,可以对外置存储卡获得完全权限,但追根究底,第三方应用如何获取对外置存储卡的读写权限,于是继续百度,有一个方案是,可以修改/system/etc/permissions,,添加media_rw的权限,如下所示
<permissionname="android.permission.WRITE_EXTERNAL_STORAGE" >
<group gid="sdcard_r"/>
<group gid="sdcard_rw"/>
<group gid="media_rw"/>
</permission>
然而对于没有root的手机来说,该方法并不可行,pass。
接着,想到第三方文件管理工具可否访问sd卡,安装了es文件管理器,在sd卡创建文件,出现如下提示
按照图示操作,果然可以访问sd卡,但到底是为什么,时间问题,下回分解吧。
相关文章推荐
- Android Design Support Library使用详解
- 没时间解释了,快使用Snackbar!——Android Snackbar花式使用指南
- 下拉刷新 与 ViewPage 的冲突 Tab页存在Scrollview嵌套 recycleview 切换回来焦点不对
- Android Studio connot resolve symbol "XXX" 无法解析的符号
- Android Studio电脑不支持HAXM的解决办法
- 解决android studio 导入项目太慢
- android-多分辨率适配的思路
- Android的Activity屏幕切换动画
- android 系统编译要求,官方资料
- Android之FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
- android 数据库操作详解
- 五 Android Capabilities讲解
- H5与android原生的JS交互
- 在mac上加速android studio
- Android之FLAG_ACTIVITY_TASK_ON_HOME
- Android打包签名忘记密码,完美解决
- android 2.2 preview3 编译bug
- Android之Activity的四种启动模式
- android studio 初次配置
- Android Fragment完全解析