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

Android使用Google ConsentSDK显示授权表单时遇未就绪错误求助

这个问题的核心原因很明确:form.load()是异步执行的,它不会阻塞主线程等待表单加载完成。你现在的代码在调用form.load()之后立刻执行form.show(),这时候表单还在加载过程中,自然会抛出"表单未准备好"的错误。

正确的做法是,只有当表单加载完成的回调触发后,再调用show()方法。你需要把form.show()移到onConsentFormLoaded()方法内部,这个回调就是专门用来通知你表单已经可以安全展示的。

修正后的代码如下:

ConsentForm form = new ConsentForm.Builder(context, privacyUrl)
        .withListener(new ConsentFormListener() {
            @Override
            public void onConsentFormLoaded() {
                // 表单加载完成后,才调用show()
                Log.d("SplashScreen", "Consent form Loaded ");
                form.show(); // 移到这里!
            }

            @Override
            public void onConsentFormOpened() {
                Log.d("SplashScreen", "Consent form opened ");
            }

            @Override
            public void onConsentFormClosed(
                    ConsentStatus consentStatus, Boolean userPrefersAdFree) {
                Log.d("SplashScreen", "Consent form Closed ");
            }

            @Override
            public void onConsentFormError(String errorDescription) {
                Log.d("SplashScreen", "Consent form error " + errorDescription);
            }
        })
        .withPersonalizedAdsOption()
        .withNonPersonalizedAdsOption()
        .build();

form.load();

另外补充几个需要注意的点:

  • 确保privacyUrl是有效的隐私政策链接,否则可能会在加载阶段就触发错误回调
  • 如果表单加载失败(比如网络问题),onConsentFormError会被触发,记得在这里做相应的错误处理,比如提示用户重试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:53:25