HarmonyOS在SDK9版本下FA模型geolocation无法定位问题解决
本文最后更新于:2023年11月8日 中午
HarmonyOS在SDK9版本下FA模型geolocation无法定位问题解决
问题描述
已经在config.json中加入了ohos.permission.LOCATION权限声明,但是在实际开发中,我使用
1 |
|
获取位置信息得不到结果
我使用的是API9FA模型,且手头现没有可供实机调试的API9设备,远程仿真设备调试多次崩溃,所以我先将此错误情况梳理如下
我们使用了如下图所示的两种方式(注释部分和未注释部分,参考来源)均未能得到弹窗,经过实测在DevEco 3.1.0.500 Beta2版本中上述功能无法正常使用,且调试窗口在requestPermissionsFromUser()方法(经过调试运行已确认是执行到此函数时报错)执行时返回401错误
解决过程
与华为客户服务工程师沟通后,梳理上述思路进行定位处理问题有三:
- 上述方法一中参考文档来源于openHarmonyOS,与现行HarmonyOS不属于同一部门维护,不保证可用性,例如上述方法在HarmonyOS内就无法正常使用
- HarmonyOS的SDK经过多次更新迭代,目前原先旧SDK已经全部弃用(401报错原因)
- 上述问题仅属于接口变更问题
解决方法
在SDK9版本中引入了geoLocationManager()
的新调用方式,在config.json
文件中声明ohos.permission.APPROXIMATELY_LOCATION
和ohos.permission.LOCATION
权限后,使用getCurrentLocation(request?: CurrentLocationRequest): Promise<Location>
方法即可弹窗并获得定位权限,下面给出我的例子,假设config.json
中已经配置好所需权限和说明
获取权限部分
1 |
|
获取定位部分
1 |
|
变更为上述函数与接口后顺利弹窗并获取到位置信息
总结
- HarmonyOS接口变更还较为频繁,文档内部将各个SDK版本接口均罗列了出来,还需进一步完善分类
- ArkTS异步执行,获取权限时需要处理好权限授权以及获取定位的先后同步顺序关系
- 通过侧载JS的方式也可以利用第三方API获取大致的经纬度信息,留给各位自行探究
HarmonyOS在SDK9版本下FA模型geolocation无法定位问题解决
https://www.0error.net/2023/06/6594.html