马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
最近需要开辟一个鸿蒙next的App,需要获取用户的定位权限。
1.配置对应的权限
直接贴代码了,在目次 你的项目/harmony-configs/entry/src/main/module.json5。 应用需要在module.json5配置文件的requestPermissions标签中声明权限。声明权限的文档中心
属性寄义数据类型取值范围name需要使用的权限名称。字符串必填,需为系统已定义的权限,取值范围请参考应用权限列表。reason申请权限的缘故起因。字符串 可选填写,该字段用于应用上架校验,当申请的权限为user_grant权限时必填,而且需要举行多语种适配。
使用string类资源引用。格式为$string: ***。
可参考权限使用来由的文案内容规范。
usedScene 权限使用的场景,该字段用于应用上架校验。包括abilities和when两个子项。
- abilities:使用权限的UIAbility或者ExtensionAbility组件的名称。
- when:调用时机。
对象 usedScene必填。
- abilities:可选填写,可以配置为多个UIAbility或者ExtensionAbility名称的字符串数组。
- when:可选填写,但如果配置此字段,只能填入固定值inuse(使用时)、always(始终),不能为空。
当申请的权限为user_grant权限时发起填写。
代码样例
- {
- "module" : {
- // ...
- "requestPermissions":[
- {
- "name" : "ohos.permission.PERMISSION1",
- "reason": "$string:reason",
- "usedScene": {
- "abilities": [
- "FormAbility"
- ],
- "when":"inuse"
- }
- },
- {
- "name" : "ohos.permission.PERMISSION2",
- "reason": "$string:reason",
- "usedScene": {
- "abilities": [
- "FormAbility"
- ],
- "when":"always"
- }
- }
- ]
- }
- }
复制代码 2.动态权限
动态权限需要先检测是否获取权限,uni.getAppAuthorizeSetting 需要在HbuilderX4.31以上的才能用,所以必须要用真机调试。贴代码
- // #ifdef APP-HARMONY
- const authorized = uni.getAppAuthorizeSetting()
- if(authorized.locationAuthorized === 'authorized' ){
- }
- // #endif
复制代码 3.定位权限配置
- 鸿蒙系统 不支持系统定位,需要配置三方sdk,比如高德,同时设置坐标系参数为 type: 'gcj02'
- map组件及定位等api
新增于HBuilderX 4.26,仅4.31之前的版本使用下面的配置方式,4.31及之后的版本请在manifest.json可视化界面配置。
map组件、getLocation、openLocation、chooseLocation依赖于地图厂商。目前仅支持腾讯地图,且此界面上显示的地图是通过webview加载的。由于目前页面使用的并非http协议,因此在申请腾讯地图key时需要将域名白名单留空以便地图能精确加载出来。后续在harmonyOS上页面会调整成以http方式加载,到时可以在腾讯地图控制台配置域名白名单。
在uni-app项目内配置腾讯地图key:
- 以源码方式打开项目manifest.json
- 在manifest.json内放入如下内容:
- {
- // ...
- "app-plus" : {
- // ...
- "distribute" : {
- // ...
- "sdkConfigs" : {
- // ...
- "maps" : {
- "qqmap" : {
- "key" : "XXX-XXXX-XXXX"
- }
- }
- }
- }
- },
- // ...
- }
复制代码 4.哀求定位
- // #ifdef APP-HARMONY
- const authorized = uni.getAppAuthorizeSetting()
- if(authorized.locationAuthorized === 'authorized' ){
- uni.getLocation({
- type: 'gcj02',
- success: function (res) {
- console.log('当前位置的经度:' + res.longitude);
- console.log('当前位置的纬度:' + res.latitude);
- }
- });
- }else {
- //打开 手机权限配置
- uni.openAppAuthorizeSetting({
- success(e) {
-
- }
- })
- }
- // #endif
复制代码 创作不易,请关注点赞收藏,感谢
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |