targetSDKVersion为33在uni-app android13系统下上传文件没有弹出文件读写权限弹窗
targetSDKVersion为33在uni-app android13系统下上传文件没有弹出文件读写权限弹窗
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 12 | HBuilderX |
操作步骤:
- 离线打包复现
预期结果:
- 可以正常弹出读写权限弹窗,同意打开读写权限后可以访问手机文件。
实际结果:
- 没有响应
bug描述:
targetSDKVersion为33,在android13系统下上传文件,没有弹出文件读写权限弹窗,app里的应用权限也没有文件读写权限勾选,tagetSDKVersion切为31版本就可以,但是google play要求sdk目标版本为33,权限申请如下:
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
minSdkVersion 21
targetSdkVersion 33
更多关于targetSDKVersion为33在uni-app android13系统下上传文件没有弹出文件读写权限弹窗的实战教程也可以访问 https://www.itying.com/category-93-b0.html
回复 wwwzzz: 最新版已修复,用最新版打包就可以了
回复 DCloud_Android_zl: 离线打包的还是不行呀,应用权限里没有文件的权限
回复 wwwzzz: android 13之后这个权限已经被废弃。你写入试一下有没有问题。
详情如下图,离线sdk已升级到3.99,配置的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="com.android.vending.BILLING" />
针对Android 13的权限问题,这是已知的API变更。在targetSdkVersion 33下,Android 13对存储权限做了重大调整:
- 旧的READ/WRITE_EXTERNAL_STORAGE权限在Android 13上已失效
- 必须使用新的细分媒体权限:
- READ_MEDIA_IMAGES (图片)
- READ_MEDIA_VIDEO (视频)
- READ_MEDIA_AUDIO (音频)
解决方案:
- 确保manifest中声明了正确的权限组合:
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
- 在代码中动态请求这些权限:
// 检查并请求权限
uni.authorize({
scope: 'scope.READ_MEDIA_IMAGES',
success() {
// 授权成功
},
fail() {
// 授权失败
}
})
- 对于文件选择器功能,建议改用系统文件选择器API:
uni.chooseFile({
success(res) {
console.log(res.tempFiles)
}
})