HarmonyOS鸿蒙Next中动态申请READ_WRITE_DOWNLOAD_DIRECTORY权限结果authResults返回2请求无效

HarmonyOS鸿蒙Next中动态申请READ_WRITE_DOWNLOAD_DIRECTORY权限结果authResults返回2请求无效 我调用requestPermissionsFromUser函数动态申请READ_WRITE_DOWNLOAD_DIRECTORY权限,结果authResults返回是2,表示value 2 indicates the request is invalid.(值2表示请求无效。),这是为什么?

let p_PermissionRequestResultPt = await ( abilityAccessCtrl.createAtManager( ) ).requestPermissionsFromUser( this.getUIContext().getHostContext()!, ['ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORY',] );
for( let i = 0; i < p_PermissionRequestResultPt.permissions.length; i++ )
{
    console.info( "申请权限:" + p_PermissionRequestResultPt.permissions[ i ] + ":" + p_PermissionRequestResultPt.authResults[ i ] ); //这里authResults为2。
}

更多关于HarmonyOS鸿蒙Next中动态申请READ_WRITE_DOWNLOAD_DIRECTORY权限结果authResults返回2请求无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

这个权限手机用不了哦

  • READ_WRITE_DOWNLOAD_DIRECTORY权限适用于PC/2in1和平板设备,用于读写公共Download目录。
  • 在手机上无法使用此权限,应通过访问应用自身目录或使用FilePicker来实现文件访问。

更多关于HarmonyOS鸿蒙Next中动态申请READ_WRITE_DOWNLOAD_DIRECTORY权限结果authResults返回2请求无效的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


那我为什么可以用new Picker.DocumentViewPicker().save( { pickerMode: Picker.DocumentPickerMode.DOWNLOAD } );来访问download目录?

并且我可以从获取到的download目录里随意读写文件?

你读写download和READ_WRITE_DOWNLOAD_DIRECTORY权限没啥关系, 你真要捋清楚的话, 就需要去看一下权限那些是支持的

READ_WRITE_DOWNLOAD_DIRECTORY权限官方是明说适用于PC/2in1和平板设备的
手机应该是FILE_ACCESS_PERSIST
你直接使用Picker.DocumentViewPicker()的话, 是临时权限, 不是持久化权限

authResults 返回 2 一般表示这次权限请求本身无效,不是用户拒绝。READ_WRITE_DOWNLOAD_DIRECTORY 这类下载目录读写权限有设备类型和场景限制,很多普通手机场景下不能像麦克风、定位那样直接动态申请。

如果只是让用户选择下载保存位置,建议优先用系统 picker,例如 DocumentViewPicker 的保存/下载目录选择流程。用户主动选择后,应用拿到的是对应 URI 的访问能力,不需要再额外申请这个权限。

如果目标是长期访问公共 Download 目录,要先确认当前设备和 API 版本是否支持该权限;不支持时应改为 picker 授权、应用沙箱目录,或 FileAccess 相关能力,避免把 authResults=2 当成授权失败反复请求。

ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORY

允许应用访问公共目录下Download目录及子目录。

支持设备:PC/2in1 | Tablet

该权限不支持手机申请。

系统Picker组件,支持开发者无需申请权限、即可使用系统应用的一些常用功能,比如访问用户的资源文件。使用系统Picker时,无需再次申请权限也可临时受限访问对应的资源。例如,当应用需要读取用户图片时,可通过使用照片Picker,在用户选择所需要的图片资源后,直接返回该图片资源,而不需要授予应用读取图片文件的权限。

在HarmonyOS Next中,authResults返回2表示PERMISSION_REQUEST_INVALID,原因:

  • READ_WRITE_DOWNLOAD_DIRECTORY属于系统预授权权限,无需动态申请,应在module.json5requestPermissions中声明后直接使用。
  • 若仍动态申请,系统视为无效请求。

返回2(无效请求)最常见的原因是应用未在 module.json5requestPermissions 中声明 ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORY,或该权限属于系统受限权限,普通应用无权动态申请。请先确认权限已正确声明,并检查该权限是否仅允许系统应用或需特殊签名备案。若应用为非系统应用,则此权限无法通过动态申请获得。

回到顶部