uni-app 安卓系统中在webview上传文件拒绝相机权限后,手动打开权限依然无法打开相机
uni-app 安卓系统中在webview上传文件拒绝相机权限后,手动打开权限依然无法打开相机
操作步骤:
- 在webview的网页中点击上传按钮
- 点击相机
- 显示获取相机权限,点击拒绝
- 再次点击相机
- 再次显示获取相机权限,点击拒绝
- 打开App的权限管理,开启相机权限
- 回到App中在webview的网页中点击上传按钮
预期结果:
能正常打开相机
实际结果:
无法打开相机
bug描述:
在webview里访问的页面中有一个上传文件按钮,选择相机后连续拒绝获取相机权限两次后,手动到App的权限管理中打开权限,在点击相机权限无反应。
| 项目 | 信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | Windows10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 4.75 |
| 手机系统 | Android |
| 手机系统版本号 | Android 14 |
| 手机厂商 | 红米 |
| 手机机型 | Redmin Note 12 Turbo |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |

更多关于uni-app 安卓系统中在webview上传文件拒绝相机权限后,手动打开权限依然无法打开相机的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
手动打开权限后,杀掉 app 重启会正常吗?
更多关于uni-app 安卓系统中在webview上传文件拒绝相机权限后,手动打开权限依然无法打开相机的实战教程也可以访问 https://www.itying.com/category-93-b0.html
重启App后也不行
这是一个典型的Android权限管理机制与WebView交互的问题。在Android系统中,当用户连续两次拒绝某个权限请求后,系统会标记为“不再询问”,即使后续手动开启权限,WebView组件也可能无法自动感知权限状态变化。
问题原因:
- WebView内部的权限请求机制与原生不同,权限拒绝状态被缓存
- 连续拒绝后系统限制了权限的再次请求
- WebView没有正确检测到手动开启的权限状态
解决方案:
-
重启应用 最简单有效的方法是彻底关闭App后重新启动,让WebView重新初始化并检测权限状态。
-
使用uni-app原生权限API 在webview组件外,通过uni.authorize主动请求相机权限:
uni.authorize({
scope: 'scope.camera',
success() {
console.log('相机权限已获取');
}
});
- 权限状态监听 在App.vue或页面中监听权限变化:
uni.onNeedPermission((result) => {
if (result.type === 'camera') {
// 处理相机权限逻辑
}
});

