有需求做一些类似文件管理器的,就会用到获取外置可移动SD卡的路径。一般的通过Environment或者Context获取的都是手机自带的存储卡路径,类似storage/emulated/0/加后缀。由于谷歌之后的意思是像ios一样,不支持外置USB或者外置可移动SD存储。但是国内的厂商一般都支持。先大概分个类,6.0以下的使用方法一,6.0以上的使用方法二。
1.这个适用6.0+的版本,因为谷歌在6.0+移除了secondary_storage这个值,所以需要另辟蹊径。查看Environment的源码则可以找到答案,
所有要获取所有的存储路径,就要用到storageManager,这个类可以通过以下代码获取
以下是具体用反射获取外置可移动SD卡路径的方法,在8.0华为Nova2s测试的结果是:外置/storage/ 内置/storage/emulated/0 . 注意/storage/可能跟机型有关,具体的看实际Log. removable为true则意味着这个路径是外置可移动的,即为外置SD卡路径
怎样操作外置SD卡文件
|
首先手机必须获取了root权限
将文件的只读属性改为读写属性并用文本编辑器打开这个文件
添加完保存退出重启手机,第三方app就有了在SD卡上写入数据的权限了