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

Android Automotive(AAOS)中Google导航SDK条款弹窗缺失问题求助

在AAOS设备上显示谷歌导航条款与条件的解决方案

在Android Automotive(AAOS)设备上,NavigationApi不会像移动设备那样自动弹出导航条款确认对话框,这会直接触发TERMS_NOT_ACCEPTED错误。要解决这个问题,你可以通过手动调用API触发条款展示:

核心解决方法

当onError回调捕获到TERMS_NOT_ACCEPTED错误时,调用NavigationApi.showTermsAndConditions()方法主动弹出条款确认对话框。注意必须传入能创建窗口的上下文(比如Activity上下文,不要用Application上下文,否则弹窗无法正常显示)。

修改后的代码示例

@SuppressLint("MissingPermission")
fun initializeNavigationApi(context: Context) { // 传入Activity等可创建窗口的上下文
    NavigationApi.getNavigator(
        foregroundLocationService?.application,
        object : NavigationApi.NavigatorListener {
            override fun onNavigatorReady(navigator: Navigator?) {
                navigator?.setTaskRemovedBehavior(Navigator.TaskRemovedBehavior.QUIT_SERVICE)
                navigationViewForAuto!!.getMapAsync { googleMap ->
                    googleMap.apply {
                        followMyLocation(GoogleMap.CameraPerspective.TILTED)
                        isTrafficEnabled = true
                    }
                }
            }
            override fun onError(@NavigationApi.ErrorCode errorCode: Int) {
                when (errorCode) {
                    NavigationApi.ErrorCode.NOT_AUTHORIZED -> {
                        Log.i("NAVIGATION API",
                            "加载Navigation API出错:API密钥无效或未授权使用导航服务,请检查AndroidManifest.xml中的配置。"
                        )
                    }
                    NavigationApi.ErrorCode.TERMS_NOT_ACCEPTED -> {
                        Log.i("NAVIGATION API",
                            "加载Navigation API出错:用户未接受导航服务条款,将弹出条款确认框。"
                        )
                        // 主动触发条款展示
                        NavigationApi.showTermsAndConditions(context, object : NavigationApi.TermsAndConditionsListener {
                            override fun onTermsAccepted() {
                                // 用户接受条款后,重新初始化NavigationApi
                                initializeNavigationApi(context)
                            }

                            override fun onTermsRejected() {
                                Log.i("NAVIGATION API", "用户拒绝了导航服务条款,无法使用导航功能。")
                            }
                        })
                    }
                    else -> Log.i("NAVIGATION API", "加载Navigation API出错:错误码$errorCode")
                }
            }
        }
    )
}

关键注意点

  • 上下文要求:必须传入Activity这类可创建窗口的上下文,Application上下文无法弹出对话框。
  • 权限校验:确保应用已获取ACCESS_FINE_LOCATION等必要的位置权限,否则条款展示或后续导航功能会受影响。
  • 重新初始化:用户接受条款后,需要重新调用initializeNavigationApi,确保NavigationApi能正常加载并使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:25:02