Anroid获取内置外置SD卡路径以及读写测试

最近项目有一个新需求是要把应用的大文件下载到外置SD卡,自己研究了一下安卓如何获取内置和外置SD卡路径以及进行文件读写,以下是自己的总结。

在网上找的方法都感觉不太好,比较乱,所以自己就查了一下安卓的官方API。官方API路径是:file:///C:/Android/android-sdk-windows/docs/guide/topics/data/data-storage.html,把C:/Android/android-sdk-windows替换为你电脑上SDK的安装路径。我是用的火狐浏览器的脱机模式查看的(这里一定要选择脱机模式,否则页面会去尝试联网,但是谷歌又被墙了,所以会无法加载)。

下面我挑一些重要的步骤进行说明(图片截取自网页):

①,获取权限:Anroid获取内置外置SD卡路径以及读写测试_第1张图片

如上图所示:如果你需要读取SD卡内容,需要的权限为:READ_EXTERNAL_STORAGE,如果你需要写入数据到SD卡,需要的权限为:WRITE_EXTERNAL_STORAGE。如果你的应用读写权限都需要,那么只需要声明写的权限即可。需要注意的是,从安卓4.4系统开始,如果你的应用仅仅需要保存你应用的私有数据,那么不需要声明这两个权限。以上这种情况你可以这样来声明权限:

    
    ...
②,检查存储卡是否可用:
Anroid获取内置外置SD卡路径以及读写测试_第2张图片
最重要的一点就是:当你需要对存储卡进行读写操作时,首先需要确认存储卡是否处于可读或者可写的状态。获取存储卡状态的方法为:Environment.getExternalStorageState()。存储卡可读的状态为:Environment.MEDIA_MOUNTED_READ_ONLY,既可读又可写的状态为:Environment.MEDIA_MOUNTED。
③:获取应用私有的存储卡路径:
Anroid获取内置外置SD卡路径以及读写测试_第3张图片
从安卓4.4开始,你可以通过调用getExternalFilesDirs()来获取一个数组,这个数组里面存储了手机的内外置SD卡路径。但是建议使用ContextCompat.getExternalFilesDirs()方法,这个方法同样支持4.3及以下系统,但是在4.3及以下系统里面并不能得到外置SD卡路径,只会返回内置SD卡路径。
④,获取存储卡的公共存储路径:
Anroid获取内置外置SD卡路径以及读写测试_第4张图片
当你的应用需要存储一些非私有数据(可以被其他应用操作的数据,比如下载的图片,音乐等)时,不能用应用的私有路径,应该使用公共路径,以便可以被其他应用访问。调用的方法为:Environment.getExternalStoragePublicDirectory();
------------------------------------------------------------------草稿未完--------------------------------------------------------------------------

你可能感兴趣的:(Android总结)