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

正确使用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)的产品介绍页面。

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

相关·内容

不适配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 App 升级

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

    12610

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

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

    5.3K51

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

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

    2.2K30

    《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_ADMIN和BLUETOOTH,App也不能正常检测到附近的蓝牙设备

    1.5K30

    【r_upgrade】快来升级你的Flutter应用

    ,下面是使用介绍 r_upgrade Android和IOS的升级应用插件==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 天气APP(三十六)运行到本地AS、更新项目版本依赖、去掉ButterKnife

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

    1.4K20

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

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

    1.4K20

    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

    事件是如何到达activity的?

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

    66510

    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 ? 获取步骤很简单!

    51330

    提示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

    《Android Studio开发实战 从零基础到App上线》本书内容问题答疑

    或者说对于一个新手该怎么正确地利用这本书,虽然我有java的基础但是我还是不太懂。像泛型、进程之类的我都不太懂。然后我需不需要把xml学一遍?...代码的修改办法同上一小点。 3)部分手机使用DownloadManager下载图片会闪退。...这是因为Android7.0之后增强了文件访问权限,DownloadManager.COLUMN_LOCAL_FILENAME被废弃,如果在7.0及以上手机访问该字段会触发异常java.lang.SecurityException...回答:打包时出现选项V1和V2,这是Android Studio2.3之后新增的功能,本书基于Android Studio2.2,当时还没有V1和V2。...ServerThread.java启动后运行run函数,从客户端接收消息,收到回车符就认为本次消息接收完毕,然后开始解析该消息的内容,包括包头和包体。

    1.2K30

    Android使用Flow检测版本升级自动下载安装

    《学习|Android检测并自动下载安装包(Kotlin)》以前这篇用的AsyncTask的方式下载过,现在AsyncTask慢慢废弃了,所以本篇也是初学Flow后的第一次体验使用。...01 创建目录及检测文件 首先在D盘的IISTest下新建一个名为Download文件夹目录 然后在Download文件夹下创建一个upgrade.txt的升级检测文件,另外再先拷贝一个apk,随便什么都可以...upgrade.txt里面是一串JSON的数据,其中versionCode和versionName是android端的版本,appdownloadurl是APK的下载路径,所以真正的APK下载路径可以从这里再获取...添加虚拟目录,在Blazor中右键选择添加虚拟目录, 03 修改MIME类型 要实现通过网页直接访问我们创建的txt文件和android的.apk文件,需要在网站的MIME类型中进行修改 找到刚才的..." /> android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> 文件存储的位置在高版本的

    1K30

    高效管理 Android 前台服务

    作者 / Keith Smyth 本文为 Android 电量管理系列连载的第四篇,希望可以为各位开发者提供设备续航方面的战略洞见和实践指南。...Android 进程管理机制 作为一款移动端操作系统,Android 在设计之初就考虑到了诸如内存和电量一类的资源限制问题。...通知标题和描述必须准确体现前台服务正在执行的操作。 如果您想了解有关前台服务的更多信息,包括最近几个版本 Android 平台内的相关重要更新,请参阅《在前台运行服务》。...如果任务必须完成,但允许推迟执行,请使用 WorkManager 或者 JobScheduler 在系统层面上实现最佳的任务调度和时间安排。...点击这里了解更多 P&E 相关产品内容

    85070

    Android7.0适配心得

    权限更改 随着Android版本越来越高,Android对隐私的保护力度也越来越大。...在Android7.0中为了提高私有文件的安全性,面向 Android N 或更高版本的应用私有目录将被限制访问。...面向 Android N 或更高版本的应用在尝试访问 COLUMN_LOCAL_FILENAME 时会触发 SecurityException。...对Web服务器如tomcat,IIS比较熟悉的小伙伴,都只知道为了网站内容的安全和高效,Web服务器都支持为网站内容设置一个虚拟目录,其实FileProvider也有异曲同工之处。...但,这些隐式广播会在后台频繁启动已注册侦听这些广播的应用,从而带来很大的电量消耗,为缓解这一问题来提升设备性能和用户体验,在Android 7.0中删除了三项隐式广播,以帮助优化内存使用和电量消耗。

    1.4K50

    Flutter 下载器 | flutter_download_manager源码解析

    前言 内容类应用中图片或文件下载,一般应用中应用更新和升级,这些都是经典的下载场景。下载是项目中基础且重要的模块。...从代码逻辑复用性和人力成本考虑,一直想实现一个纯Dart实现的下载库,作为技术储备。...flutter_download_manager 简介 地址: flutter_download_manager 版本: 0.5.4 特点: 纯 Dart 实现 通过 url 管理下载任务 能够通知状态和进度更改...部分下载功能 队列下载 暂停、取消或恢复下载 并行文件下载(2 个或可以更改) 支持批量下载 支持平台: Linux | MacOS | Windows | Android | iOS 使用方法 简单下载一个文件...dl.resumeDownload(url5); 效果展示 源码解析 类图 任务管理类:DownloadManager 整个核心就类 DownloadManager, 而每个下载任务的抽象是 DownloadTask

    1.2K20

    【Android从零单排系列二十四】《Android视图控件——Gallery》

    前言 小伙伴们,在上文中我们介绍了Android视图组件PopupWindow,本文我们继续盘点,介绍一下视图控件的Gallery。 注:Gallery在API29中已被弃用。...一 Gallery基本介绍 二 Gallery使用方法 1.在XML布局文件中添加Gallery控件: <Gallery android:id="@+id/gallery" android...> parent) { // 处理没有选中项的操作 } }); 5.为了提升性能和滑动流畅度,你可以对Gallery进行进一步的定制和优化,例如添加缓存、优化视图重用等。...三 Gallery常见属性及方法 常见属性: android:animationDuration:指定图片切换时的动画持续时间。...四 总结 Gallery在Android平台中已经不再被推荐使用,并且可能会对布局和交互造成一些限制。建议使用RecyclerView或ViewPager等更现代的控件来替代Gallery。

    31710
    领券