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

7 回复

HBuilder X 3.94-alpha已修复,请升级到此版本重新打包试一下。

更多关于targetSDKVersion为33在uni-app android13系统下上传文件没有弹出文件读写权限弹窗的实战教程也可以访问 https://www.itying.com/category-93-b0.html


回复 wwwzzz: 最新版已修复,用最新版打包就可以了

回复 DCloud_Android_zl: 离线打包sdk修复了吗

回复 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对存储权限做了重大调整:

  1. 旧的READ/WRITE_EXTERNAL_STORAGE权限在Android 13上已失效
  2. 必须使用新的细分媒体权限:
  • READ_MEDIA_IMAGES (图片)
  • READ_MEDIA_VIDEO (视频)
  • READ_MEDIA_AUDIO (音频)

解决方案:

  1. 确保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" />
  1. 在代码中动态请求这些权限:
// 检查并请求权限
uni.authorize({
    scope: 'scope.READ_MEDIA_IMAGES',
    success() {
        // 授权成功
    },
    fail() {
        // 授权失败
    }
})
  1. 对于文件选择器功能,建议改用系统文件选择器API:
uni.chooseFile({
    success(res) {
        console.log(res.tempFiles)
    }
})
回到顶部