Flutter项目Android 30模拟器无法打开相机问题求助
解决方案
1. 补充AndroidManifest.xml的包可见性声明
Android 11(API 30)引入了包可见性限制,仅声明CAMERA权限无法让应用检测到系统内的相机类应用,需要在AndroidManifest.xml的manifest根节点下添加如下查询配置:
<queries> <intent> <action android:name="android.media.action.IMAGE_CAPTURE" /> </intent> </queries>
你的现有manifest配置仅包含基础权限,缺少上述queries节点是原生系统环境下报错的核心原因,真机未触发是因为部分定制ROM对包可见性限制做了放宽,或内置相机应用在系统豁免名单中。
2. 检查模拟器相机配置
原生SDK 30模拟器默认可能未启用相机模拟,按以下步骤修改配置:
- 打开Android Studio的AVD Manager,找到对应模拟器,点击编辑按钮(铅笔图标)
- 点击「Show Advanced Settings」展开高级配置项
- 找到Camera分类,将Front Camera、Back Camera均设置为
Emulated(模拟相机)或Webcam0(调用电脑摄像头) - 保存配置后选择冷启动(Cold Boot)模拟器,不要使用快速启动快照
3. 补充运行时权限校验
调用image_picker的相机接口前,先通过permission_handler等工具校验CAMERA运行时权限已被用户授予,避免模拟器权限弹窗被拦截导致权限未生效的问题。
内容的提问来源于stack exchange,提问作者Yash Savsani
相关产品推荐
相关产品推荐

