uni-app 在 compileSdkVersion 33,Android 13、14 手机版本中,权限管理看不到文件和文档权限
uni-app 在 compileSdkVersion 33,Android 13、14 手机版本中,权限管理看不到文件和文档权限
类别 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC系统版本 | 13.4 (22F66) |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.98 |
手机系统 | Android |
手机系统版本 | Android 13 |
手机厂商 | vivo |
手机机型 | android 13 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 离线 |
项目创建方式 | HBuilderX |
示例代码:
amap-gp-libs-release.aar
aps-igexin-fcm-release.aar
aps-release.aar
aps-unipush-gp-release.aar
Bluetooth-release.aar
breakpad-build-release.aar
fcm-3.1.1.aar
fingerprint-release.aar
geolocation-amap-release.aar
lib.5plus.base-release.aar
oauth-weixin-release.aar
payment-alipay-release.aar
payment-weixin-release.aar
sdk-for-gj-4.4.3.1.aar
uniapp-v8-release.aar
compileSdkVersion 33
buildToolsVersion "33.0.0"
minSdkVersion 22
targetSdkVersion 33
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation fileTree(include: ['*.aar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.facebook.fresco:fresco:2.5.0'
implementation "com.facebook.fresco:animated-gif:2.5.0"
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.alibaba:fastjson:1.2.83'
implementation 'androidx.webkit:webkit:1.3.0'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.core:core:1.1.0'
implementation "androidx.fragment:fragment:1.1.0"
implementation 'androidx.multidex:multidex:2.0.1'
}
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
操作步骤:
无
预期结果:
在android13、14 下可正确添加文件和文档权限
实际结果:
无法在android13、14 下添加文件和文档权限
bug描述:
compileSdkVersion是33,手机版本版本是Android13之后,在权限管理也看不到文件和文档得权限
1 回复
在 uni-app
开发中,如果你在 compileSdkVersion
设置为 33 的情况下,发现 Android 13 或 14 设备上无法看到文件和文档权限,可能是由于以下几个原因:
1. 权限声明问题
- 在 Android 13 及以上版本中,访问文件和文档的权限发生了变化。你需要确保在
AndroidManifest.xml
文件中正确声明了相关权限。 - 对于 Android 13 及以上版本,访问媒体文件(如图片、视频、音频)需要声明
READ_MEDIA_IMAGES
、READ_MEDIA_VIDEO
、READ_MEDIA_AUDIO
等权限。 - 对于访问所有文件,仍然需要
READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
权限。
<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" />
2. 动态权限请求
- 在 Android 6.0 及以上版本中,部分权限需要动态请求。你需要在代码中动态请求这些权限。
- 你可以使用
uni-app
提供的uni.authorize
或uni.requestAuthorization
方法来请求权限。
uni.authorize({
scope: 'scope.writePhotosAlbum',
success() {
console.log('权限授权成功');
},
fail() {
console.log('权限授权失败');
}
});
3. 权限管理界面问题
- 在 Android 13 及以上版本中,权限管理界面可能有所变化。用户需要在应用设置中手动授予文件和文档权限。
- 你可以引导用户进入应用设置页面,手动授予权限。
uni.openSetting({
success(res) {
console.log('打开设置页面成功', res);
},
fail() {
console.log('打开设置页面失败');
}
});
4. 适配 Android 13 及以上版本
- Android 13 引入了更细粒度的媒体权限管理,你需要确保你的应用适配了这些变化。
- 如果你需要访问所有文件,可能需要使用
MANAGE_EXTERNAL_STORAGE
权限,并且需要向 Google Play 提交申请。
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
5. 检查 compileSdkVersion
和 targetSdkVersion
- 确保你的
compileSdkVersion
和targetSdkVersion
都设置为 33 或更高版本,以确保应用能够正确适配 Android 13 及以上版本。
android {
compileSdkVersion 33
defaultConfig {
targetSdkVersion 33
}
}