Android Studio 使用API29无法向手机存储写文件问题
16lz
2021-01-23
Android Studio 使用API29无法向手机存储写文件问题
- 起初思路
- 存在问题
- 解决思路
- 解决代码
起初思路
最近在做一个项目需要把服务器的文件下载到手机存储中,开始的思路是这样的
DownloadManager.Request request = new DownloadManager.Request(Uri.parse("http://www.xxx.com/" + filename)); request.setTitle("下载xxx数据"); request.setDescription("正在下载xxx数据....."); request.setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS + "/data/Type1/", str); downloadManager.enqueue(request);
存在问题
这个思路在API23测试时候可以正确下载并保存文件,但是在29时候直接没法下载文件了(应该是没法创建filename文件)。
解决思路
官方文档给的是在AndroidManifest.xml中的application中添加如下属性,但是我添加之后依然不能正确存储文件,考虑可能是setDestinationInExternalFilesDir()方法出错了,于是试着自己写了下方法,发现可以正确存储文件了。
解决代码
参考了这个博主的代码,自己没做太多修改,所以就不放自己的了,有个注意的地方是如果下载多个文件或者服务器不稳定的话,把超时时间调长一点(不然下载的数据可能出错),我后来用的时候调到了50000
con.setReadTimeout(50000);
更多相关文章
- Android来电号码获取代码
- Edittext在xml文件中设置android:focusable=“false”之后,edittex
- 【经验记录】Android上传文件到服务器
- Android studio查看SQLIte数据库文件
- [图文]为移植到Android平台上的Cocos2d-x项目添加xml布局文件
- 今天开始写android的照片浏览器(一)至返回所有图片文件
- Android工程内嵌资源文件的两种方法
- 删除androidAndroid递归方式删除某文件夹下的所有文件
- IntelliJ IDEA 如何导出安卓(Android)apk文件 详细教程