Flutter OH 应用在调用某些系统功能时(如网络、相机、定位、存储等),需要在 ohos 原生侧声明相应权限。若未正确申请权限,可能导致 API 调用失败或应用崩溃。
权限声明位置
- 在
ohos/entry/src/main/module.json5文件的module内配置requestPermissions声明权限:
{"module": {"name":"entry","type":"entry","description":"$string:module_desc","mainElement":"EntryAbility","deviceTypes": ["phone","tablet"],"pages":"$profile:main_pages",// 权限声明在此处"requestPermissions": [ {"name":"ohos.permission.INTERNET"} ] } }配置权限之后,需要重新签名
File→ProjectStructure →Project→ Signing Configs
权限场景相关问题
flutter输入框长按无法粘贴问题
应用需要申请剪贴板权限
ohos.permission.READ_PASTEBOARD。
"requestPermissions": [ {"name":"ohos.permission.READ_PASTEBOARD","reason":"$string:EntryAbility_desc","usedScene": {"abilities": ["EntryAbility"],"when":"inuse"} } ]flutter无法保存图片到相册问题
应用需要申请保存图片权限
ohos.permission.WRITE_IMAGEVIDEO。"requestPermissions": [ {"name":"ohos.permission.WRITE_IMAGEVIDEO","reason":"$string:EntryAbility_desc","usedScene": {"abilities": ["EntryAbility"],"when":"inuse"} }
功能与权限对照表
开发 Flutter OH 应用时,请根据功能场景,在 ohos 原生侧申请相应权限:
表格仅列出常用权限,更多权限请参考应用权限列表
| 功能场景 | 所需权限 | 授权方式 |
|---|---|---|
| 网络请求 | ohos.permission.INTERNET | 系统授权 |
| 获取本应用信息 | ohos.permission.GET_BUNDLE_INFO | 系统授权 |
| 获取设备位置信息 | ohos.permission.LOCATION_IN_BACKGROUNDohos.permission.LOCATIONohos.permission.APPROXIMATELY_LOCATION | 用户授权 |
| 相机 | ohos.permission.CAMERA | 用户授权 |
| 麦克风 | ohos.permission.MICROPHONE | 用户授权 |
| 通讯录 | ohos.permission.READ_CONTACTSohos.permission.WRITE_CONTACTS | 用户授权 |
| 日历 | ohos.permission.READ_CALENDARohos.permission.WRITE_CALENDARohos.permission.READ_WHOLE_CALENDARohos.permission.WRITE_WHOLE_CALENDAR | 用户授权 |
| 运动数据 | ohos.permission.ACTIVITY_MOTION | 用户授权 |
| 身体传感器 | ohos.permission.READ_HEALTH_DATA | 用户授权 |
| 图片和视频 | ohos.permission.WRITE_IMAGEVIDEOohos.permission.READ_IMAGEVIDEOohos.permission.MEDIA_LOCATION | 用户授权 |
| 音乐和音频 | ohos.permission.WRITE_AUDIOohos.permission.READ_AUDIO | 用户授权 |
| 跨应用关联 | ohos.permission.APP_TRACKING_CONSENT | 用户授权 |
| 设备发现和连接 | ohos.permission.ACCESS_BLUETOOTHohos.permission.ACCESS_NEARLINKohos.permission.DISTRIBUTED_DATASYNC | 用户授权 |
| 剪切板 | ohos.permission.READ_PASTEBOARD | 用户授权 |
| 截屏 | ohos.permission.CUSTOM_SCREEN_CAPTURE | 用户授权 |
| 文件夹 | ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORYohos.permission.READ_WRITE_DESKTOP_DIRECTORYohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY | 用户授权 |
权限与Profile
- 开发调试时,权限可以在授权到临时签名文件里
- 发布应用时,需要申请发布 Profile