张国伟 发表于 6 天前

uniapp 开辟鸿蒙next 之权限

最近需要开辟一个鸿蒙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企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: uniapp 开辟鸿蒙next 之权限