作者:许勇权

在调查图库中关于在内外存置卡之间移动/复制操作时,写了一个小程序测试在内外存储卡操作的可行性和性能问题,发现第三方应用无法访问外置存储卡。

调查后得知,在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对外置sd卡的权限问题(上)相关推荐

  1. Android P 外置 SD 卡写入权限问题

    概述 Android 9.0 后,发现文件管理器在写入外置 SD 卡时出现了写入失败的问题,定位到 File.canWrite() 方法,发现返回了 false.经过讨论追踪定位,发现是由于 Goog ...

  2. Android 外置 SD 卡写入权限问题

    https://busy.im/post/android-sdcard-write/ 最近升级到 Android 9.0 后,发现文件管理器在写入外置 SD 卡时出现了写入失败的问题,定位到 File ...

  3. android 6.0 sd卡读写权限,Android 6.0 读写SD卡权限问题

    一.问题描述## Android 6.0 下默认存储SD卡,使用原生FMRadio生成的文件保存到内部存储中 [预置条件]插入T卡[操作步骤]设置>存储设备和USB>选择SD卡为默认存储& ...

  4. 外置存储权限在哪打开_安卓手机外置sd卡的权限怎么打开?

    展开全部 在2.x的版本中,在manifest中配e69da5e887aa3231313335323631343130323136353331333365633962置的权限android.permi ...

  5. android 获取默认存储路径,Android获取外置SD卡存储路径的方法

    在开发应用的过程中,经常会遇到需要获取设备存储路径的问题.而从网上看到的很多方法获取到的都是内置存储位置,并非外置SD卡路径,因此我推荐使用反射的机制来获取外置存储的路径. 通常,使用Environm ...

  6. Android不同版本SD卡存储权限解决

    1.Android6.0之前: 6.0之前是不需要动态申请权限的,直接在manifest中申请即可以正常使用. <manifest xmlns:android="http://sche ...

  7. android sd卡挂载广播,Android--检测内置/外置SD卡存储卡,枚举所有挂载点(通过反射实现),监听SD卡广播...

    直接上重点: 1:获取内置SD卡的路径, 但是判断是否有效(是否挂载), 需要用到下面检测挂载点的方法 /** * 获取内置SD卡路径 * * @return */ public String get ...

  8. Android判断有无外置SD卡(TF卡),并读写文件

    转载来源:https://blog.csdn.net/qq_27061049/article/details/94178875 1.相关方法说明: 2.Android Manifest.xml 添加权 ...

  9. Android本地文件存储,机身和外置sd卡

    在安卓的开发中,有时候要用到大文件的存储,这个时候就不能存储在应用内部(data/data),只能借助外部存储.而外部存储又分为手机机身的存储空间(一级sd卡)和外置sd卡存储空间(二级sd卡). 1 ...

最新文章

  1. 命名实体识别的三中标注方法BIO,BIOES,BMES
  2. Virtex-6器件的时钟资源、混合模式时钟管理器(MMCM)
  3. ElasticSearch 2 (7) - 基本概念
  4. Qt 断言的使用 Q_ASSERT
  5. jsonp的原理·jsonp是不是ajax中实现跨域访问的技术
  6. java 永久代_Java新生代、老生代和永久代详解
  7. 65寸的液晶电视是挂在墙上好还是放在电视柜上好?
  8. 相机标定—了解相机模型
  9. 斐波那契数列(剑指offer)
  10. Java开发中的一些概念
  11. 【系列三之CentOS系列】CentOS命令操作(2)
  12. smart原则_OKR 文化:用 SMART 原则量化目标
  13. mysql入侵服务器_记通过mysql数据库成功入侵到服务器内部的渗透实战
  14. 丹佛大学计算机专业,丹佛大学计算机工程排名第81(2018年TFE美国排名)
  15. 中二青年付杰的逆袭故事:从二本生到 ICLR 杰出论文奖,我用了20年
  16. 程序员因工资低拒绝offer,HR:估计你一辈子就是个程序员
  17. 电池充电IC市场现状研究分析与发展前景预测报告
  18. Spring Cloud Alibaba 微服务详细笔记
  19. windows7现实计算机内存不足,windows7内存不足怎么办
  20. Codeforces 13C

热门文章

  1. 计算机音乐我还是曾经那个少年,我还是曾经的那个少年什么歌曲?是谁唱的?求科普!...
  2. S3C2416裸机开发系列十六_sd卡驱动实现
  3. 从零学Linux第一章——操作系统演变及历史介绍
  4. 企业微信群机器人快速接入
  5. 群管理机器人开发sdk详解
  6. MyBatis关联映射例题
  7. 点云补全综述 Comprehensive Review of Deep Learning-Based 3D Point Clouds Completion Processing and Analys
  8. 宝塔面版配置本机访问测试站点
  9. 【牛客网-在线编程-Python入门篇】——开篇介绍
  10. 高端大气上档次的管理后台模板