DownloadManager是Android系统提供的系统服务,用于管理下载任务。它可以处理大文件的下载任务,并在后台进行下载,支持断点续传和网络错误处理。而Android Q(API29)引入了内容提供商(Content Provider)的变化,需要进行适配。
正确使用DownloadManager和Android Q及更高版本的内容提供商,需要注意以下几点:
<uses-permission android:name="android.permission.INTERNET" />
和<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
权限。request.setDestinationUri(Uri)
方法设置保存路径。在Android Q及更高版本中,由于分区存储(Scoped Storage)的限制,无法直接访问外部存储的文件路径,需要使用ContentResolver提供的接口来获取文件Uri。<queries>
标签,并声明需要访问的内容提供商。例如,如果需要访问媒体文件,可以添加<queries><intent><action android:name="android.intent.action.MEDIA_PROVIDER" /></intent></queries>
。然后,可以通过ContentResolver.query(Uri, String[], String, String[], String)
方法查询下载完成的文件,获取文件的Uri。综上所述,正确使用DownloadManager和Android Q及更高版本的内容提供商,可以实现安全可靠地进行下载任务,并适配Android Q的分区存储机制。
腾讯云的相关产品推荐:腾讯云对象存储(COS),是一种安全、稳定、低成本的云端存储服务,适用于文件存储、备份和共享,可以与Android应用程序无缝集成。了解更多信息,请访问腾讯云对象存储(COS)的产品介绍页面。
云+社区开发者大会(杭州站)
腾讯云数据库TDSQL(PostgreSQL版)训练营
DB・洞见
腾讯云GAME-TECH沙龙
云+社区技术沙龙[第5期]
DB TALK 技术分享会
云+社区技术沙龙[第6期]
云+社区沙龙online [国产数据库]
领取专属 10元无门槛券
手把手带您无忧上云