uniapp 开辟鸿蒙next 之权限

打印 上一主题 下一主题

主题 1511|帖子 1511|积分 4533

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

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权限时发起填写。
  
代码样例
  1. {
  2.   "module" : {
  3.     // ...
  4.     "requestPermissions":[
  5.       {
  6.         "name" : "ohos.permission.PERMISSION1",
  7.         "reason": "$string:reason",
  8.         "usedScene": {
  9.           "abilities": [
  10.             "FormAbility"
  11.           ],
  12.           "when":"inuse"
  13.         }
  14.       },
  15.       {
  16.         "name" : "ohos.permission.PERMISSION2",
  17.         "reason": "$string:reason",
  18.         "usedScene": {
  19.           "abilities": [
  20.             "FormAbility"
  21.           ],
  22.           "when":"always"
  23.         }
  24.       }
  25.     ]
  26.   }
  27. }
复制代码
2.动态权限

动态权限需要先检测是否获取权限,uni.getAppAuthorizeSetting 需要在HbuilderX4.31以上的才能用,所以必须要用真机调试。贴代码
  1. // #ifdef APP-HARMONY
  2. const authorized = uni.getAppAuthorizeSetting()
  3. if(authorized.locationAuthorized === 'authorized' ){
  4. }
  5. // #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内放入如下内容:
    1. {
    2.     // ...
    3.     "app-plus" : {
    4.         // ...
    5.         "distribute" : {
    6.             // ...
    7.             "sdkConfigs" : {
    8.                 // ...
    9.                 "maps" : {
    10.                     "qqmap" : {
    11.                         "key" : "XXX-XXXX-XXXX"
    12.                     }
    13.                 }
    14.             }
    15.         }
    16.     },
    17.     // ...
    18. }
    复制代码
4.哀求定位 


  1. // #ifdef APP-HARMONY
  2. const authorized = uni.getAppAuthorizeSetting()
  3. if(authorized.locationAuthorized === 'authorized' ){
  4.     uni.getLocation({
  5.         type: 'gcj02',
  6.         success: function (res) {
  7.                 console.log('当前位置的经度:' + res.longitude);
  8.                 console.log('当前位置的纬度:' + res.latitude);
  9.         }
  10. });
  11. }else {
  12. //打开 手机权限配置
  13. uni.openAppAuthorizeSetting({
  14.                                 success(e) {
  15.                                        
  16.                                 }
  17.                         })
  18. }
  19. // #endif
复制代码
创作不易,请关注点赞收藏,感谢

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张国伟

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表