HarmonyOS鸿蒙Next中获取定位失败问题

HarmonyOS鸿蒙Next中获取定位失败问题 我这边有两台服务器(服务器A和服务器B),服务器A中放了H5外链A,服务器B中放了H5外链B,其中外链B中有获取当前经纬度的需求,获取定位用的是uniapp的uni.getLocation。我们应用的需求是先跳转到外链A再从外链A跳转到外链B,都是用的webview,但是经过两个服务器的跳转外链B就无法获取到定位了,手机定位设置确认已打开。单独直接跳转外链B的时候定位也能正常获取。

模拟外链A跳外链B: https://app.17zdwc.com/h5/demoB5

模拟外链B: https://app.sanjiangrongmei.com/h5/demoB4


更多关于HarmonyOS鸿蒙Next中获取定位失败问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

我这边访问外链A,报的错是:Permissions policy violation: Geolocation access has been blocked because of a permissions policy applied to the current document。因为我看不到源码是怎样的,就是A链一个跳转按钮,然后在webview里打开外链B是吧,webview这个组件是不是设置了allow=“geolocation”

以下是我模拟的代码,是可以的:

A页面:

<template>
  <view class="container" @click="jump">点击这里跳转</view>
</template>

<script>
export default {
  methods: {
    jump() {
      uni.navigateTo({
        url: '../webview/index'
      })
    }
  }
}
</script>

B页面,webview

<template>
  <view>
    <web-view src="https://app.sanjiangrongmei.com/h5/demoB4" allow="geolocation"></web-view>
  </view>
</template>

更多关于HarmonyOS鸿蒙Next中获取定位失败问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,获取定位失败可能由以下原因导致:

  1. 权限问题:应用未获得定位权限。需在config.json中声明ohos.permission.LOCATION权限,并在运行时动态申请。

  2. 定位服务未开启:设备的定位服务可能未启用。需确保设备的GPS或网络定位已开启。

  3. 定位模式设置不当:定位模式可能未正确配置。鸿蒙提供了LocationMode枚举,需根据需求选择HIGH_ACCURACYBATTERY_SAVINGDEVICE_ONLY模式。

  4. 定位管理器未初始化LocationManager未正确初始化或未设置监听器。需通过getSystemService(Context.LOCATION_SERVICE)获取实例,并设置LocationListener

  5. 网络问题:网络定位依赖于网络连接,需确保设备网络正常。

  6. 设备兼容性:部分设备可能不支持某些定位功能,需检查设备兼容性。

  7. 系统版本问题:鸿蒙Next版本可能存在定位相关的Bug,需确认系统版本是否为最新。

  8. 定位超时:定位请求可能因超时失败,需检查超时设置。

  9. 模拟器限制:在模拟器上可能无法获取真实定位,需在真机上测试。

检查以上问题,定位失败问题应能得到解决。

在HarmonyOS鸿蒙Next中获取定位失败,可能由以下原因导致:

  1. 权限未开启:确保已在config.json中声明ohos.permission.LOCATION权限,并在运行时动态申请。
  2. 定位服务未开启:检查设备是否开启定位服务。
  3. 定位模式设置不当:确保使用LocationRequest设置合适的定位模式(如高精度、低功耗等)。
  4. 网络或GPS信号弱:确保设备处于信号良好的区域。
  5. API使用错误:检查LocationManager的初始化及回调函数是否正确实现。

建议逐步排查以上问题,必要时参考官方文档或社区支持。

回到顶部