Android 关于外置SD卡下载文件的一些问题记录
公司的业务有一些MP4文件下载的功能
我用的下载框架是okgo下边的okDownload模块,很好用但是已经不维护了 链接
https://github.com/jeasonlzy/okhttp-OkGo
推荐一个比较好用的 FileDownloader
https://github.com/lingochamp/FileDownloader
言归正传,现在好多Android 手机厂商又提供了扩展内存 尤其是华为手机 我们之前没有做外置sd卡的适配 默认下载到内置sd卡
假如用户的默认下载位置选择外置sd卡 就直接下载失败
解决办法
首先确定自己拥有权限
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
动态权限请自行查找资料 很多
外置sd卡 可操作下载的目录只有
Android/data/"+context.getPackageName()+"/files/
为了方便管理,比如当用户卸载当前app时,可以保证把当前app的缓存或者下载全部清理掉,避免引起用户的反感
判断是否挂载sd卡
如果挂载了sd卡并且默认下载路径是外置sd卡,获取到的目录
/storage/51DD-E12A/Android/data/com.houdask.app/files/media
如果挂载了sd卡但是默认下载路径是手机内存,获取到的目录
/storage/emulated/0/Android/data/com.houdask.app/files/media
如果用户没有挂载内存卡 如下图 可以随便设置路径 如下图 就是在根目录创建了一个文件夹来保存要下载的文件
但是建议跟上面设置一样的路径,
但是下载的时候有遇见了另一个问题
查找了一些方案 但都不是我的问题
后来发现了另一个问题
查找了一下 当文件名包含冒号的时候 会报这个异常
https://blog.****.net/moyuxueyi/article/details/39153725
但是我的文件名没有包含冒号 但是有一个分号,而且文件名特别长,改成短名字,并且不包含特殊符号,文件创建成功,可以下载。