uni-app 急急急,plus.android.requestPermissions 获取WRITE_EXTERNAL_STORAGE vivo获取权限始终是永久禁用
uni-app 急急急,plus.android.requestPermissions 获取WRITE_EXTERNAL_STORAGE vivo获取权限始终是永久禁用
plus.android.requestPermissions 获取WRITE_EXTERNAL_STORAGE vivo获取权限始终是永久禁用 获取CAMERA都有问题,只有相册会出现这个问题
在上传图片时获取相册文件读取权限,始终获取到的状态是永久禁用(resultObj.deniedAlways)
手动更改权限为允许,再次进入app,获取到的状态依旧是禁用,清除缓存后再次进入app也不行
测试包自定义基座没有出现这个问题,其他机型也没有这个问题
打包时拍摄、文件读取权限都加入到manifest.json文件中了
这个问题四月份出现过一次,后来更新好了,现在又出现了!!!提bug也没人理!!!!
Android 33 以上设备
WRITE_EXTERNAL_STORAGE 权限已废弃。需要修改为
想问一下,如果是文件呢?
遇到一样的问题
你好大佬,有解决方案了麻烦踢我一下,万分感谢!!!
回复 3***@qq.com: 你看看你的targetSdkVersion设置的多少
回复 3***@qq.com: 改成30,就可以了
回复 传播星球: 好的大佬,感谢感谢,我去试试
除了改targetSdkVersion成30,还有别的办法吗,上架google只能是33啊
想问有解决办法吗?
试下这个api?uni.createRequestPermissionListener(),https://uniapp.dcloud.net.cn/api/system/create-request-permission-listener.html
在处理 uni-app
中使用 plus.android.requestPermissions
获取 WRITE_EXTERNAL_STORAGE
权限时,如果在 vivo 设备上遇到权限始终是永久禁用的问题,这通常与 vivo 系统的权限管理策略有关。vivo 以及其他一些国产 Android 设备,为了增强用户隐私保护,对权限管理进行了更严格的控制。
尽管无法直接修改系统行为以绕过这一限制,但你可以通过以下方式优化你的应用,以更好地处理权限请求,并向用户提供清晰的权限使用说明。
以下是一个示例代码,展示如何在 uni-app
中请求 WRITE_EXTERNAL_STORAGE
权限,并处理权限请求的结果,包括处理被永久拒绝的情况:
// 检查并请求WRITE_EXTERNAL_STORAGE权限
function requestStoragePermission() {
const permissions = ['android.permission.WRITE_EXTERNAL_STORAGE'];
plus.android.requestPermissions(permissions, function(event) {
const granted = event.deniedAlways.length === 0 && event.granted.length > 0;
if (granted) {
console.log('Storage permission granted.');
// 权限被授予,执行相关操作
} else {
console.log('Storage permission denied.');
// 处理权限被拒绝的情况
if (event.deniedAlways.includes('android.permission.WRITE_EXTERNAL_STORAGE')) {
console.log('Storage permission permanently denied.');
// 显示提示信息,引导用户到设置中手动开启权限
uni.showModal({
title: '提示',
content: '应用需要存储权限才能正常工作,请在设置中手动开启。',
success: function(res) {
if (res.confirm) {
// 跳转到应用权限设置页面(vivo设备可能有特殊URL)
// 注意:不同设备可能有不同的跳转方式,vivo设备可能需要特定处理
// 以下是一个通用跳转示例,可能需要根据vivo设备做调整
const appInfoUrl = 'package:' + plus.runtime.manifest.packagename;
plus.runtime.openURL(appInfoUrl, '_blank', {});
}
}
});
}
}
}, function(e) {
console.error('Request permissions failed: ' + JSON.stringify(e));
});
}
// 调用函数请求权限
requestStoragePermission();
注意:
- vivo 设备可能有特定的系统设置页面 URL,你可能需要查找 vivo 的官方文档或社区以获取正确的跳转 URL。
- 用户教育很重要:在请求权限前,确保向用户清晰解释为什么需要该权限,这有助于提高权限授予率。
- 考虑权限被拒绝后的替代方案,如使用应用内存储而非外部存储。