使用DownloadManager类下载文件需申请哪些权限?
使用DownloadManager实现文件下载所需权限说明
嗨,我来帮你梳理下用DownloadManager做文件下载需要申请的权限,结合你贴的代码来看:
首先得区分不同Android版本的权限要求,因为系统在存储权限上的规则变化挺大的:
1. Android 10(API 29)及以上版本
这个版本开始,系统引入了分区存储机制,不需要申请WRITE_EXTERNAL_STORAGE权限——因为DownloadManager默认会把文件下载到系统的公共「下载」目录,系统会自动处理存储访问的权限问题。
不过如果你非要自定义下载路径到APP私有目录之外的其他位置,可能需要申请MANAGE_EXTERNAL_STORAGE权限,但这个权限需要用户手动在系统设置里授权,一般不推荐这么做,尽量用系统默认的下载路径就好。
2. Android 6.0(API 23)到Android 9(API 28)版本
这个区间的系统需要申请WRITE_EXTERNAL_STORAGE权限,而且因为这是「危险权限」,你不能只在Manifest里声明,还得在代码里动态向用户申请授权,用户同意后才能正常下载。
3. 所有版本都必须的基础权限
不管哪个版本,下载文件都需要网络访问,所以必须在Manifest里声明INTERNET权限:
<uses-permission android:name="android.permission.INTERNET" />
给你个完整的Manifest权限声明示例,能适配不同版本:
<!-- 基础网络权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 仅针对Android 6-9的存储权限,高版本自动忽略 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
另外你代码里设置的通知栏显示下载进度,这个不需要额外权限,DownloadManager自带的通知是系统层面的,直接用就行~
内容的提问来源于stack exchange,提问作者user9555243
相关产品推荐
相关产品推荐

