您的位置:首页 > 移动开发 > Android开发

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卡创建文件,出现如下提示



按照图示操作,果然可以访问sd卡,但到底是为什么,时间问题,下回分解吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: