首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

正确使用DownloadManager和Android Q(API29)及更高版本的内容提供商?

DownloadManager是Android系统提供的系统服务,用于管理下载任务。它可以处理大文件的下载任务,并在后台进行下载,支持断点续传和网络错误处理。而Android Q(API29)引入了内容提供商(Content Provider)的变化,需要进行适配。

正确使用DownloadManager和Android Q及更高版本的内容提供商,需要注意以下几点:

  1. 首先,要确保在AndroidManifest.xml文件中添加必要的权限声明。对于DownloadManager,需要添加<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />权限。
  2. 使用DownloadManager进行下载时,需要创建一个DownloadManager.Request对象,并设置相应的属性,包括下载的URL、保存的文件路径、通知栏的显示、网络类型限制等。可以通过调用request.setDestinationUri(Uri)方法设置保存路径。在Android Q及更高版本中,由于分区存储(Scoped Storage)的限制,无法直接访问外部存储的文件路径,需要使用ContentResolver提供的接口来获取文件Uri。
  3. 在Android Q及更高版本中,应用需要通过内容提供商的方式来获取下载完成的文件。首先,需要在AndroidManifest.xml文件中添加一个<queries>标签,并声明需要访问的内容提供商。例如,如果需要访问媒体文件,可以添加<queries><intent><action android:name="android.intent.action.MEDIA_PROVIDER" /></intent></queries>。然后,可以通过ContentResolver.query(Uri, String[], String, String[], String)方法查询下载完成的文件,获取文件的Uri。
  4. 如果需要监听下载任务的状态变化,可以注册一个BroadcastReceiver,并通过DownloadManager.ACTION_DOWNLOAD_COMPLETE和DownloadManager.ACTION_NOTIFICATION_CLICKED等广播来处理下载完成或通知栏点击事件。

综上所述,正确使用DownloadManager和Android Q及更高版本的内容提供商,可以实现安全可靠地进行下载任务,并适配Android Q的分区存储机制。

腾讯云的相关产品推荐:腾讯云对象存储(COS),是一种安全、稳定、低成本的云端存储服务,适用于文件存储、备份和共享,可以与Android应用程序无缝集成。了解更多信息,请访问腾讯云对象存储(COS)的产品介绍页面。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android7.0版本影响开发改进分析

本文总结分析了Android7.0版本影响开发改进。分享给大家供大家参考,具体如下: 低电耗模式 会对闹铃、GPS Wi-Fi 扫描 产生限制....可以使用JobScheduler API ,更多参考后台优化 系统权限更改 为了提高私有文件安全性,面向 Android 7.0或更高版本App私有目录被限制访问(0700)。...分享私有文件内容推荐方法是使用FileProvider。 DownloadManager不再按文件名分享私人存储文件。...针对Android 7.0或更高版本开发应用在尝试访问COLUMN_LOCAL_FILENAME时会触发 SecurityException。...在屏幕密度发生更改时,系统不会自动终止针对Android 7.0更高版本开发App;不过这些App仍可能对配置变更做出不良响应。 2.

87110
  • 不适配targetSdkVersion坑你了解吗?

    (说明该开发版本存在问题) STEP-03: 排查awp代码改动影响 使用接入方提供安装包,替换加载早期版本内核,惊奇发现也是可以复现网页白屏问题。...(排除近期产品代码功能变更优化,引入上述问题) STEP-04: 排查接入方代码改动影响 使用接入方线上安装包,分别加载早期最新版本内核,结果发现问题无法复现。...为29,发现在Android Q手机上可以复现问题。...Android Q共享内存特性详细参考:https://developer.android.com/about/versions/10/behavior-changes-10 隐患思考 细思下,这有个更隐患问题...因为是为第三方提供服务产品形态,所以单一APP测试存在区别是:在单一APP测试中,适配测试主要涉及分辨率适配,厂商机型适配,系统版本适配,ROM 适配,CPU架构适配Android系统运行环境适配

    2K10

    Android基于自带DownloadManager实现下载功能示例

    (DownloadManager.EXTRA_DOWNLOAD_ID, -1);DownloadManager.EXTRA_DOWNLOAD_ID是DownloadManager类里参数,使用下面方法注册广播...有query.setFilterByIdquery.setFilterByStatus两个方法, query.setFilterById就是把downloadManager.enqueue返回id放进去作为查询条件...记得ApiDemo里有用户联系人使用Uri方式查询联系人contacts,进入Root Explore观察com.android.providers.downloads包里DB数据库内容时,发现下载记录里有...更多关于Android相关内容感兴趣读者可查看本站专题:《Android基本组件用法总结》、《Android开发入门与进阶教程》、《Android布局layout技巧总结》、《Android视图View...技巧总结》、《Android编程之activity操作技巧总结》、《Android资源操作技巧汇总》Android控件用法总结》 希望本文所述对大家Android程序设计有所帮助。

    1.4K21

    项目需求讨论 - Android App 升级

    (PS:也可以用第三方公司出,比如腾讯Bugly等,也挺方便,不过apk要上传到Bugly平台上,然后公司要求在自己平台上,所以没有使用。)...(下载APK当然要网络权限把文件写入存储权限) 那如果在Android6.0以上时候。我们该怎么来做,因为我是使用RxJava。所以这里也推荐一个RxPermissions来进行获取权限。...更多使用还是请看上面的相关文章链接。...这里我顺便放篇链接,关于Service,觉得写得不错,大家可以看下: 深入理解Androidstartservicebindservice 6.我们前面的条件都ok了。...用户也都按了确定之后,就开始我们正式下载之路,启动Service来进行相关后续操作: 第六个部分我会分几块来讲解 下载APK --- DownLoadManager 基本使用介绍大家看下面文章介绍

    12310

    Android开发笔记(六十一)文件下载管理DownloadManager

    下载管理DownloadManager 文件下载其实是网络数据访问一种特殊形式,使用普通http请求也能完成,就是实现起来会繁琐一些。...下载请求 要想使用下载功能,首先得构建一个下载请求,说明从哪里下载、下载参数为何、下载文件保存到哪里等等。...断点续传及其他 博主一开始学习DownloadManager时,就觉得好奇怪,该工具竟然没有提供暂停方法恢复方法,这岂不意味着,文件下载没法断点续传了么?...自定义进度条 文件下载上传都经常用到进度条,可是Android自带ProgressBar无法显示进度百分比文本。...首先在自定义类CustomProgressBar中声明一个画笔与百分比文本,然后提供百分比文本设置获取方法,最后重写onDraw方法,在控件中央使用drawText函数画上百分比文本。

    5.2K41

    Jetpack中可能被你忽视—行为组件简析

    它提供一致且易于使用 API Surface,适用于大多数 Android 设备,并可向后兼容至 Android 5.0(API 级别 21)。...此库管理界面,并与存储空间交互,因此您只需定义用户可以配置单独设置。此库自带 Material 主题,可在不同设备操作系统版本之间提供一致用户体验。 开始看到这个标题我是懵逼,设置?...说白了就是你应用一些功能可以在其他应用显示操作。 所以,如果你应用发布在GooglePlay的话,还是可以了解学习下Slice相关内容,毕竟是Google为了应用轻便性做出又一步实验。...下载下来后,配置好URI,就会提示要访问某某应用切片权限提示,点击确定就可以看到切片内容了(注意最好使用模拟器测试,真机有可能无法弹出切片权限弹窗)。...slice.jpg 总结 Jetpack-行为组件讲完了,这部分主要是Android服务相结合一些库,帮助大家更好调用系统服务。

    2.2K30

    基于DownloadManager简单下载器编写小结

    一直听说过Android自带DownloadManager,只是拖延症发作,一直没有时间去研究研究,其实在很多项目开发中,都有一个功能是非常重要,那就是应用检查更新了!...DownloadManager基本使用姿势 通过getSystemService进行实例化 DownloadManager downloadManager = (DownloadManager)context.getSystemService...("testDownload", "test/test.apk"); //设置下载所需网络环境,设置了移动网络WiFi环境下均能下载 request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE...如果选择不显示在通知栏,那么必须声明以下权限 <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION...基本使用方式,那么基于它来封装一个简单易用下载器吧!

    90410

    【r_upgrade】快来升级你Flutter应用

    ,下面是使用介绍 r_upgrade AndroidIOS升级应用插件==Flutter应用升级插件 网页链接形式升级 apk下载形式升级使用Service或者DownloadManager 跳转到应用商店升级...Android热更新 开始吧 1.使用插件: 在pubspec.yaml文件添加下面代码 dependencies: r_upgrade: last version 2.使用打开链接方式进行更新...获取最后一次下载ID(Service) 该方法只会寻找当前应用版本版本号下下载过ID void getLastUpgradeId() async { int id = await...热更新 (使用 DownloadManager) 你可以使用升级返回id进行热更新,下载文件需要将新版本生成isolate_snapshot_data、kernel_blob.bin、vm_snapshot_data...安卓平台通知栏 如果你想自定义通知栏显示内容, 可以这样做, 修改或添加文件路径为project/android/app/main/res/r_upgrade_value.xml,添加下面代码 <?

    1.6K50

    Android Studio开发实战 从零基础到App上线》源码运行问题解答

    七、部分手机使用DownloadManager下载图片会闪退。...问题原因:Android7.0之后增强了文件访问权限,DownloadManager.COLUMN_LOCAL_FILENAME被废弃,如果在7.0以上手机访问该字段会触发异常java.lang.SecurityException.../jni/Android.mk" } } 十一、Android.mk内部只能使用绝对路径,不能使用相对路径。...问题原因:原来Android.mk是带BOM格式,所以编译会出状况,需要另存为不带BOM才可以正常使用相对路径。...问题原因:Android6.0之后对蓝牙功能校验也变严格了,即使已经在AndroidManifest.xml声明蓝牙相关权限如BLUETOOTH_ADMINBLUETOOTH,App也不能正常检测到附近蓝牙设备

    1.5K30

    事件是如何到达activity

    Window androidview管理是以window为单位,每个window对应一个view树。这里管理涉及到view绘制以及事件分发等。...最简单view树可以只有一个view。 android中view绘制事件分发,都是以view树为单位。每一棵view树,则为一个window 。...我们Activity布局,就被添加到内容栏中,属于DecorView控件树一部分。...而如果没有使用DecorView作为模板窗口,流程就会上述不一致了,例如PopupWindow: PopupWindow PopupWindow他根View是 PopupDecorView ,而不是...本文主要内容是讲事件来源,但事件分发来源远没有这么简单,源码细节有非常多内容值得我们去学习,而本文只是把整体流程抽了出来。感谢阅读。

    66010

    Android Q Beta 正式发布 | 精于形,安于内

    今天,我们正式推出 Android Q Beta 1 版本预览版 SDK ,欢迎各位开发者及早期用户尝鲜体验。...Android Q 还针对外部储存空间引入了一些变更,请务必仔细阅读此文档,确保应用正确使用外部储存空间。 另外,我们还发现后台应用突然跳转至前台,挡住当前应用行为让用户开发者们颇为烦心。...基于云编译文件适用于所有应用,而且运行 Android P 或更高版本系统设备目前已提供相关支持。 ?...如果您想为 Android Q 开发应用,只需将 Android Q Beta SDK 工具下载到 Android Studio 3.3 (或更高版本),并按照步骤配置开发环境。...如果您想享用 Android Q 行为变更最新修复,建议您使用 Android Studio 3.5 (或更高版本)。

    1.3K40

    Android 天气APP(二十六)增加自动更新(检查版本、通知栏下载、自动安装)

    因为之前APP比较小,更像是一个Demo,看的人没有几个,更像是我在自娱自乐,不过随着我不断更新APP功能写博客,使用用户增加了,虽然不多,但我还是蛮开心,增加APP自动更新这个功能好处就是...那些步骤都属于基本操作,我就不过多赘述,重点来看版本更新接口。往下进行时,请先确保平台上有你上传得APK才行。 点击应用检测更新接口 实际上我需要只是idtoken ?...然后打开ApiService,新增接口方法,因为里面的idapi token是固定所以我就不用动态传递过去了,直接写死在url里面,当然如果你要写的话记得要用自己idapi token,用我你是那不到返回数据...然后在使用地方一一修改就可以了 ? 现在运行一下,不过你要改一下版本名,因为我平台上是2.2,所以我改成2.1,然后运行 ? 看起来还是不错呀。...request = new DownloadManager.Request(Uri.parse(downloadUrl)); //设置运行使用网络类型,移动网络或者Wifi都可以

    1.3K20

    Android 天气APP(三十六)运行到本地AS、更新项目版本依赖、去掉ButterKnife

    随着Android版本更新,Android Studio更新,项目中一些内容不能在新版本中很好使用,甚至出现编译不了情况,这对我来说没啥,但是对于拿到项目满心欢喜学生来说,运行不了,无疑是致命...一、新版Android Studio编译运行   下载代码之后,我们就需要在Android Studio中运行,这里我们可以使用Google官网中最新AS版本,这里我使用版本如下图所示:   这里版本是海豚...还有一点就是编译时候项目的JDK也有关系,例如我之前项目采用JDK是1.8,AS中自带了两个1.811两个版本,新项目都是采用11版本。...JDK没有问题之后就会下载你项目所依赖远程仓库代码,下载之后再进行编译。这个过程可能会比较长,项目所使用库多少当前网速快慢有关。...针对Android 12更高版本应用,当相应组件定义了意图过滤器时,需要为“Android:exported”指定显式值。

    1.4K20

    DownloadManager实现文件下载功能

    不想每一次都是用第三方东西,android系统应该自己拥有下载工具类,然后就是我们今天要讲 DownloadManager了。...接触DownloadManager是因为我前一段时间在写自己一个音乐播放器,需要从网络获取歌曲并下载,这个时候我就想找一个简单是用下载方式然后就认识了它,关于它使用我还没做具体深究,只是把它用在了自己应用里面...实现 下载我主要关心三个方面的内容: 从哪来 到哪去 完成之后操作 这三方面的内容就是最重要,下面我就下载一首歌来进行说明: 我们首先需要得到DownloadManager一个实例,...如果要使用这个参数,需要在应用清单文件中加上DOWNLOAD_WITHOUT_NOTIFICATION权限。...ID,这样我们实现了文件下载打开。

    1.2K10

    Android Q Beta 3 亮相 Google IO'19

    我们现在正在硬件合作伙伴以及主流机器学习框架提供商 (如 TenserFlow) 展开积极合作,共同推进神经网络 API 1.2 优化支持工作。...基于云编译文件适用于所有应用,而且运行 Android P 或更高版本系统设备目前已提供相关支持。...探索新特性 API 当您准备就绪后,请进一步探索 Android Q, 了解可在应用中使用诸多新特性 API。...如果您想为 Android Q 开发应用,只需将 Android Q Beta SDK 工具下载到 Android Studio 3.3 或更高版本,并按照步骤配置开发环境。...如果需要 Android Q 行为变更最新修复,建议您使用 Android Studio 3.5 (或更高版本)。 如何获取 Beta 3 ? 获取步骤很简单!

    50830

    提示Android Q Beta 3 亮相 Google IO19

    所有运行 Android Q更高版本系统设备将在不久后收到 Project Mainline 计划推送。目前,我们正在与生态圈伙伴积极合作,确保各大厂商设备尽早作好万全准备。...我们现在正在硬件合作伙伴以及主流机器学习框架提供商 (如 TenserFlow) 展开积极合作,共同推进神经网络 API 1.2 优化支持工作。...探索新特性 API 当您准备就绪后,请进一步探索 Android Q, 了解可在应用中使用诸多新特性 API。...如果您想为 Android Q 开发应用,只需将 Android Q Beta SDK 工具下载到 Android Studio 3.3 或更高版本,并按照步骤配置开发环境。...如果需要 Android Q 行为变更最新修复,建议您使用 Android Studio 3.5 (或更高版本)。 如何获取 Beta 3 ? 获取步骤很简单!

    1K40
    领券