You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Here Advanced Positioning高级定位功能在Android 11系统上无法正常运行

HERE Android SDK 3.17 版本 Android 11 室内定位启动失败解决方案
  • 权限适配
    Android 11 新增位置权限分级规则,需完成以下配置:
    1. 在 AndroidManifest.xml 中新增 ACCESS_BACKGROUND_LOCATION 权限声明
    2. 运行时动态申请权限时,必须引导用户授予「始终允许」位置权限,仅授予「使用时允许」无法启动 LocationDataSourceHERE 对应的后台定位服务
    3. 确认已提前获取 ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION 权限
    4. 若应用 targetSdkVersion >= 31,还需补充声明 android.permission.FOREGROUND_SERVICE_LOCATION 权限
  • 包可见性适配
    Android 11 引入应用包可见性限制,默认无法访问独立进程的组件,需在 AndroidManifest.xml 中新增 queries 配置:
<queries>
    <service android:name="com.here.services.internal.LocationService" />
</queries>
  • 服务配置调整
    现有 LocationService 配置需补充前台服务类型声明,适配 Android 11 对前台服务的管控要求,修改后配置如下:
<service
    android:name="com.here.services.internal.LocationService"
    android:enabled="true"
    android:exported="false"
    android:process=":remote"
    android:foregroundServiceType="location">
</service>
  • 调用逻辑调整
    确保在 HERE SDK 完全初始化完成后再调用定位相关逻辑,同时可以调整启动顺序,先启动数据源再绑定到 PositioningManager,调整后代码示例:
mPositioningManager?.run {
    if (!isActive) {
        val locationDataSource = LocationDataSourceHERE.getInstance()
        // 先启动HERE数据源再绑定
        locationDataSource.start()
        this.dataSource = locationDataSource
        retorno = this.start(PositioningManager.LocationMethod.GPS_NETWORK_INDOOR)
    }
    if (!isListenerAdded && retorno) {
        this.addListener(WeakReference(this@AppPositioningManager))
        isListenerAdded = true
    }
}

内容的提问来源于stack exchange,提问作者Matheus Abreu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:06:03