为什么我的应用程序android在我添加GDPR EU许可时崩溃?

为什么我的应用程序android在我添加GDPR EU许可时崩溃?,android,android-studio,Android,Android Studio,我将GDPR代码添加到我的应用程序中,但这会使它崩溃 这是我的功能: private void loadGPDR() { ConsentInformation consentInformation = ConsentInformation.getInstance(this); String[] publisherIds = {"yyyyyyyyyyyyyy"}; consentInformation.requestConsentInfoUpdat

我将GDPR代码添加到我的应用程序中,但这会使它崩溃

这是我的功能:

private void loadGPDR() {

        ConsentInformation consentInformation = ConsentInformation.getInstance(this);
        String[] publisherIds = {"yyyyyyyyyyyyyy"};
        consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
            @Override
            public void onConsentInfoUpdated(ConsentStatus consentStatus) {
                // User's consent status successfully updated.
            }

            @Override
            public void onFailedToUpdateConsentInfo(String errorDescription) {
                // User's consent status failed to update.
            }
        });
        URL privacyUrl = null;
        try {
            // TODO: Replace with your app's privacy policy URL.
            privacyUrl = new URL("https://sites.google.com/view/yyyyyyyyyy");
        } catch (MalformedURLException e) {
            e.printStackTrace();
            // Handle error.
        }
        form = new ConsentForm.Builder(this, privacyUrl)
                .withListener(new ConsentFormListener() {
                    @Override
                    public void onConsentFormLoaded() {
                        // Consent form loaded successfully.
                        form.show();
                    }

                    @Override
                    public void onConsentFormOpened() {
                        // Consent form was displayed.
                    }

                    @Override
                    public void onConsentFormClosed(
                            ConsentStatus consentStatus, Boolean userPrefersAdFree) {
                        // Consent form was closed.
                    }

                    @Override
                    public void onConsentFormError(String errorDescription) {
                        // Consent form error.
                    }
                })
                .withPersonalizedAdsOption()
                .withNonPersonalizedAdsOption()
                .withAdFreeOption()
                .build();
        form.load();
    }
错误:

Process: com.code.myapplication, PID: 28444
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.code.myapplication/com.code.myapplication.MainActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)
        at android.app.ActivityThread.access$900(ActivityThread.java:154)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5294)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
        at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:114)
     Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x2040003
        at android.content.res.Resources.getText(Resources.java:321)
        at android.content.res.XResources.getText(XResources.java:837)
        at android.content.res.Resources.getString(Resources.java:407)
        at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:684)
        at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
        at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:631)
        at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:780)
        at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:619)
        at com.android.org.chromium.android_webview.AwContents.<init>(AwContents.java:556)
        at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:311)
        at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:96)
        at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:263)
        at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue(WebViewChromium.java:123)
        at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run(WebViewChromium.java:110)
        at com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)
        at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask(WebViewChromium.java:107)
        at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:260)
        at android.webkit.WebView.<init>(WebView.java:554)
        at android.webkit.WebView.<init>(WebView.java:489)
        at android.webkit.WebView.<init>(WebView.java:472)
        at android.webkit.WebView.<init>(WebView.java:459)
        at android.webkit.WebView.<init>(WebView.java:449)
        at com.google.ads.consent.ConsentForm.<init>(ConsentForm.java:80)
        at com.google.ads.consent.ConsentForm.<init>(ConsentForm.java:46)
        at com.google.ads.consent.ConsentForm$Builder.build(ConsentForm.java:210)
        at com.code.myapplication.MainActivity.loadGPDR(MainActivity.java:70)
        at com.code.myapplication.MainActivity.onCreate(MainActivity.java:18)
        at android.app.Activity.performCreate(Activity.java:5990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)
Process:com.code.myapplication,PID:28444
java.lang.RuntimeException:无法启动活动组件信息{com.code.myapplication/com.code.myapplication.MainActivity}:android.content.res.Resources$NotFoundException:字符串资源ID#0x2040003
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2358)上
位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)
在android.app.ActivityThread.access$900(ActivityThread.java:154)
在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1321)
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5294)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:904)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
位于de.robv.android.xposed.XposedBridge.main(XposedBridge.java:114)
原因:android.content.res.Resources$NotFoundException:字符串资源ID#0x2040003
位于android.content.res.Resources.getText(Resources.java:321)
位于android.content.res.XResources.getText(XResources.java:837)
位于android.content.res.Resources.getString(Resources.java:407)
在com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:684)
在com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)上
位于com.android.org.chromiu.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:631)
在com.android.org.chromiu.android_webview.AwContents.setNewAwContents(AwContents.java:780)
在com.android.org.chromium.android_webview.AwContents.(AwContents.java:619)
在com.android.org.chromium.android_webview.AwContents.(AwContents.java:556)
位于com.android.webview.chromium.webviewcromium.initForReal(webviewcromium.java:311)
com.android.webview.chromium.webviewcromium.access$100(webviewcromium.java:96)
位于com.android.webview.chromium.webviewcromium$1.run(webviewcromium.java:263)
在com.android.webview.chromium.webviewcromium$webviewcromiumrunqueue.drainQueue(webviewcromium.java:123)
在com.android.webview.chromium.webviewcromium$webviewcromium运行$1.run(webviewcromium.java:110)
位于com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)
在com.android.webview.chromium.webviewcromium$webviewcromiumrunqueue.addTask(webviewcromium.java:107)
位于com.android.webview.chromium.webviewcromium.init(webviewcromium.java:260)
位于android.webkit.WebView(WebView.java:554)
位于android.webkit.WebView(WebView.java:489)
位于android.webkit.WebView(WebView.java:472)
位于android.webkit.WebView(WebView.java:459)
位于android.webkit.WebView(WebView.java:449)
在com.google.ads.approvement.approvementForm上(approvementForm.java:80)
在com.google.ads.approvement.approvementForm上(approvementForm.java:46)
在com.google.ads.approvement.approvementForm$Builder.build(approvementForm.java:210)上
位于com.code.myapplication.MainActivity.loadGPDR(MainActivity.java:70)
位于com.code.myapplication.MainActivity.onCreate(MainActivity.java:18)
位于android.app.Activity.performCreate(Activity.java:5990)
位于android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)上

Belyamani的评论对我很有用。 只需更新appcompat库即可:

发件人:

致:


原因:android.content.res.Resources$NotFoundException:String resource ID#0x2040003
您缺少一个字符串资源(
..\app\src\main\res\values\strings.xml
?)是的,我理解消息,但我没有使用您在我的函数中看到的任何字符串资源。当我删除该函数时,应用程序不会崩溃!清理你的项目并重建它。谢谢兄弟!我找到了解决方案,我将appcompat库从androidx.appcompat:appcompat:1.1.0改为androidx.appcompat:appcompat:1.1.0-rc01,我在三星Galaxy A70(Android 5.1)上也遇到了同样的问题。但在其他设备中,它也能正常工作。我也会试试你的解决方案
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.appcompat:appcompat:1.2.0-alpha03'