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()方法出错了,于是试着自己写了下方法,发现可以正确存储文件了。
Android Studio 使用API29无法向手机存储写文件问题_第1张图片

解决代码

参考了这个博主的代码,自己没做太多修改,所以就不放自己的了,有个注意的地方是如果下载多个文件或者服务器不稳定的话,把超时时间调长一点(不然下载的数据可能出错),我后来用的时候调到了50000

con.setReadTimeout(50000);

更多相关文章

  1. Android来电号码获取代码
  2. Edittext在xml文件中设置android:focusable=“false”之后,edittex
  3. 【经验记录】Android上传文件到服务器
  4. Android studio查看SQLIte数据库文件
  5. [图文]为移植到Android平台上的Cocos2d-x项目添加xml布局文件
  6. 今天开始写android的照片浏览器(一)至返回所有图片文件
  7. Android工程内嵌资源文件的两种方法
  8. 删除androidAndroid递归方式删除某文件夹下的所有文件
  9. IntelliJ IDEA 如何导出安卓(Android)apk文件 详细教程

随机推荐

  1. android4.2上获取应用程序大小的变更点
  2. Android(安卓)解决Handler在运行时加载报
  3. Android中MediaButtonReceiver广播监听器
  4. Android中各种onTouch事件
  5. Android修炼之道—时间测量
  6. Get the Android(安卓)SDK---获取Android
  7. php直播源码安卓自定义Dialog设置自动消
  8. Android(安卓)onMeasure、Measure、measu
  9. Delphi XE5 android toast
  10. Android(安卓)的网络编程(15)-Http JSon