Skip to content
This repository has been archived by the owner on Aug 13, 2022. It is now read-only.

Consent Form not showing #1

Closed
frankyxcs opened this issue May 21, 2018 · 13 comments
Closed

Consent Form not showing #1

frankyxcs opened this issue May 21, 2018 · 13 comments

Comments

@frankyxcs
Copy link

frankyxcs commented May 21, 2018

Hi i have a problem: The consentform is not showing on for example Samung Galaxy S9+ with Android 8

Update: Does not work on Android 7.12 too. Same problem

i have the following logfile :

the main problem seems to be :
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.SafeBrowsingResponse" on path: DexPathList[[zip file

it would be good if you can fix this asap !

at void android.webkit.WebView.(android.content.Context) (WebView.java:541)
at void com.google.ads.consent.ConsentForm.(com.google.ads.consent.ConsentForm$Builder) (ConsentForm.java:80)
at void com.google.ads.consent.ConsentForm.(com.google.ads.consent.ConsentForm$Builder, com.google.ads.consent.ConsentForm$1) (ConsentForm.java:46)
at com.google.ads.consent.ConsentForm com.google.ads.consent.ConsentForm$Builder.build() (ConsentForm.java:215)
at void shoppinglist.com.checklist.MainApp$1.onConsentInfoUpdated(com.google.ads.consent.ConsentStatus) (MainApp.java:179)
at void com.google.ads.consent.ConsentInformation$ConsentInfoUpdateTask.onPostExecute(com.google.ads.consent.ConsentInformation$ConsentInfoUpdateResponse) (ConsentInformation.java:269)
at void com.google.ads.consent.ConsentInformation$ConsentInfoUpdateTask.onPostExecute(java.lang.Object) (ConsentInformation.java:189)
at void android.os.AsyncTask.finish(java.lang.Object) (AsyncTask.java:695)
at void android.os.AsyncTask.-wrap1(android.os.AsyncTask, java.lang.Object) (AsyncTask.java:-1)
at void android.os.AsyncTask$InternalHandler.handleMessage(android.os.Message) (AsyncTask.java:712)
at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:105)
at void android.os.Looper.loop() (Looper.java:164)
at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6938)
at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:327)
at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1374)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.SafeBrowsingResponse" on path: DexPathList[[zip file "/data/app/com.android.chrome-PxcsJgPrdsd1orI9WHkgHA==/base.apk"],nativeLibraryDirectories=[/data/app/com.android.chrome-PxcsJgPrdsd1orI9WHkgHA==/lib/arm64, /data/app/com.android.chrome-PxcsJgPrdsd1orI9WHkgHA==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:48)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:651)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:581)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int) (WebView.java:564)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet) (WebView.java:551)
at void android.webkit.WebView.(android.content.Context) (WebView.java:541)
at void com.google.ads.consent.ConsentForm.(com.google.ads.consent.ConsentForm$Builder) (ConsentForm.java:80)
at void com.google.ads.consent.ConsentForm.(com.google.ads.consent.ConsentForm$Builder, com.google.ads.consent.ConsentForm$1) (ConsentForm.java:46)
at com.google.ads.consent.ConsentForm com.google.ads.consent.ConsentForm$Builder.build() (ConsentForm.java:215)
at void shoppinglist.com.checklist.MainApp$1.onConsentInfoUpdated(com.google.ads.consent.ConsentStatus) (MainApp.java:179)
at void com.google.ads.consent.ConsentInformation$ConsentInfoUpdateTask.onPostExecute(com.google.ads.consent.ConsentInformation$ConsentInfoUpdateResponse) (ConsentInformation.java:269)
at void com.google.ads.consent.ConsentInformation$ConsentInfoUpdateTask.onPostExecute(java.lang.Object) (ConsentInformation.java:189)
at void android.os.AsyncTask.finish(java.lang.Object) (AsyncTask.java:695)

@rampara
Copy link
Contributor

rampara commented May 21, 2018

@frankyxcs is your app crashing due to that exception or is it just a warning? If it is just a warning, do you see any other content in logcat that may indicate why the form is not showing?

@frankyxcs
Copy link
Author

hi rampara : i read on stackoverflow that this seems to bee a warning and my app is not crashing but the form will not load.

I really do not know why the form is not loading. Here is another logcat :

at void com.google.android.gms.ads.internal.l.run() (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):16)
at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:789)
at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:98)
at void com.google.android.gms.ads.internal.util.f.dispatchMessage(android.os.Message) (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):9)
at void android.os.Looper.loop() (Looper.java:164)
at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6938)
at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:327)
at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1374)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.SafeBrowsingResponse" on path: DexPathList[[zip file "/data/app/com.android.chrome-PxcsJgPrdsd1orI9WHkgHA==/base.apk"],nativeLibraryDirectories=[/data/app/com.android.chrome-PxcsJgPrdsd1orI9WHkgHA==/lib/arm64, /data/app/com.android.chrome-PxcsJgPrdsd1orI9WHkgHA==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:48)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:651)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:581)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int) (WebView.java:564)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet) (WebView.java:551)
at void android.webkit.WebView.(android.content.Context) (WebView.java:541)
at void com.google.android.gms.ads.internal.webview.u.(com.google.android.gms.ads.internal.webview.at, com.google.android.gms.ads.internal.webview.au, java.lang.String, boolean, mt, com.google.android.gms.ads.internal.util.client.m, com.google.android.gms.ads.internal.csi.l, com.google.android.gms.ads.internal.bn, com.google.android.gms.ads.internal.w, com.google.android.gms.ads.internal.clearcut.a) (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):1)
at java.lang.Object com.google.android.gms.ads.internal.webview.q.call() ((null):5)
at java.lang.Object com.google.android.gms.ads.internal.util.bs.a(java.util.concurrent.Callable) (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):23)
at com.google.android.gms.ads.internal.webview.i com.google.android.gms.ads.internal.webview.o.a(android.content.Context, com.google.android.gms.ads.internal.webview.au, java.lang.String, boolean, boolean, mt, com.google.android.gms.ads.internal.util.client.m, com.google.android.gms.ads.internal.csi.l, com.google.android.gms.ads.internal.bn, com.google.android.gms.ads.internal.w, com.google.android.gms.ads.internal.clearcut.a) (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):8)
at com.google.android.gms.ads.internal.webview.i com.google.android.gms.ads.internal.i.a(com.google.android.gms.ads.internal.state.b, com.google.android.gms.ads.internal.x, com.google.android.gms.ads.internal.safebrowsing.k) (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):12)

    at com.google.android.gms.ads.internal.webview.i com.google.android.gms.ads.internal.y.a(com.google.android.gms.ads.internal.state.b, com.google.android.gms.ads.internal.x, com.google.android.gms.ads.internal.safebrowsing.k) (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):20)

    at void com.google.android.gms.ads.internal.l.run() (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):16)
    at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:789)
    at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:98)
    at void com.google.android.gms.ads.internal.util.f.dispatchMessage(android.os.Message) (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):9)
    at void android.os.Looper.loop() (Looper.java:164)
    at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6938)
    at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
    at void com.android.internal.os.Zygote$MethodAndArgsCaller.run() (Zygote.java:327)
    at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1374)
Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.hb>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/webkit/SafeBrowsingResponse;
    at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:48)
    at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:651)
    at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:581)
    at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet, int) (WebView.java:564)
    at void android.webkit.WebView.<init>(android.content.Context, android.util.AttributeSet) (WebView.java:551)
    at void android.webkit.WebView.<init>(android.content.Context) (WebView.java:541)
    at void com.google.android.gms.ads.internal.webview.u.<init>(com.google.android.gms.ads.internal.webview.at, com.google.android.gms.ads.internal.webview.au, java.lang.String, boolean, mt, com.google.android.gms.ads.internal.util.client.m, com.google.android.gms.ads.internal.csi.l, com.google.android.gms.ads.internal.bn, com.google.android.gms.ads.internal.w, com.google.android.gms.ads.internal.clearcut.a) (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):1)
    at java.lang.Object com.google.android.gms.ads.internal.webview.q.call() ((null):5)

also

Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.hb>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/webkit/SafeBrowsingResponse;
at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:48)

also

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.SafeBrowsingResponse" on path: DexPathList[[zip file "/data/app/com.android.chrome-PxcsJgPrdsd1orI9WHkgHA==/base.apk"],nativeLibraryDirectories=[/data/app/com.android.chrome-PxcsJgPrdsd1orI9WHkgHA==/lib/arm64, /data/app/com.android.chrome-PxcsJgPrdsd1orI9WHkgHA==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:48)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:651)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:581)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int) (WebView.java:564)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet) (WebView.java:551)
at void android.webkit.WebView.(android.content.Context) (WebView.java:541)
at void com.google.android.gms.ads.internal.webview.u.(com.google.android.gms.ads.internal.webview.at, com.google.android.gms.ads.internal.webview.au, java.lang.String, boolean, mt, com.google.android.gms.ads.internal.util.client.m, com.google.android.gms.ads.internal.csi.l, com.google.android.gms.ads.internal.bn, com.google.android.gms.ads.internal.w, com.google.android.gms.ads.internal.clearcut.a) (:com.google.android.gms.dynamite_dynamitemodulesa@12685023@12.6.85 (040400-197041431):1)
at java.lang.Object com.google.android.gms.ads.internal.webview.q.call() ((null):5)

@frankyxcs
Copy link
Author

Tested with huawei mediapad m5 android 8 now too
same probmlem on all 3 devices

Rejecting re-init on previously-failed class java.lang.Class<com.android.webview.chromium.hb>: java.lang.NoClassDefFoundError: Failed resolution of: Landroid/webkit/SafeBrowsingResponse;
at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:48)

at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:651)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:581)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int) (WebView.java:564)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet) (WebView.java:551)
at void android.webkit.WebView.(android.content.Context) (WebView.java:541)
at void com.google.ads.consent.ConsentForm.(com.google.ads.consent.ConsentForm$Builder) (ConsentForm.java:80)
at void com.google.ads.consent.ConsentForm.(com.google.ads.consent.ConsentForm$Builder, com.google.ads.consent.ConsentForm$1) (ConsentForm.java:46)
at com.google.ads.consent.ConsentForm com.google.ads.consent.ConsentForm$Builder.build() (ConsentForm.java:215)
at void shoppinglist.com.checklist.MainApp$1.onConsentInfoUpdated(com.google.ads.consent.ConsentStatus) (MainApp.java:189)
at void com.google.ads.consent.ConsentInformation$ConsentInfoUpdateTask.onPostExecute(com.google.ads.consent.ConsentInformation$ConsentInfoUpdateResponse) (ConsentInformation.java:269)
at void com.google.ads.consent.ConsentInformation$ConsentInfoUpdateTask.onPostExecute(java.lang.Object) (ConsentInformation.java:189)

and

Caused by: java.lang.ClassNotFoundException: Didn't find class "android.webkit.SafeBrowsingResponse" on path: DexPathList[[zip file "/data/app/com.android.chrome-D8mfMmKqHJm9k3quvUTxoA==/base.apk"],nativeLibraryDirectories=[/data/app/com.android.chrome-D8mfMmKqHJm9k3quvUTxoA==/lib/arm64, /data/app/com.android.chrome-D8mfMmKqHJm9k3quvUTxoA==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64, /product/lib64]]
at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)
at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
at void com.android.webview.chromium.WebViewChromium.init(java.util.Map, boolean) (WebViewChromium.java:48)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int, java.util.Map, boolean) (WebView.java:651)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int, int) (WebView.java:581)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet, int) (WebView.java:564)
at void android.webkit.WebView.(android.content.Context, android.util.AttributeSet) (WebView.java:551)
at void android.webkit.WebView.(android.content.Context) (WebView.java:541)
at void com.google.ads.consent.ConsentForm.(com.google.ads.consent.ConsentForm$Builder) (ConsentForm.java:80)
at void com.google.ads.consent.ConsentForm.(com.google.ads.consent.ConsentForm$Builder, com.google.ads.consent.ConsentForm$1) (ConsentForm.java:46)
at com.google.ads.consent.ConsentForm com.google.ads.consent.ConsentForm$Builder.build() (ConsentForm.java:215)

@rampara
Copy link
Contributor

rampara commented May 21, 2018

@frankyxcs do you receive the onConsentFormError() callback? If so, what is the returned error description ?

@frankyxcs
Copy link
Author

here is the formerror

05-22 01:25:20.319 1858-1858/Formerror: Consent form is not ready to be displayed.
05-22 01:25:21.168 1858-1858Formerror: Error: consent form can be used with custom provider selection only.

the second one is strange because im using the standart/general list in my admob account

my form is like this :

URL privacyUrl = null;
try {
// TODO: Replace with your app's privacy policy URL.
privacyUrl = new URL("http://www.test.de/datenschutzapp.html");
} catch (MalformedURLException e) {
e.printStackTrace();
// Handle error.
}
ConsentForm form = new ConsentForm.Builder(context, privacyUrl)
.withListener(new ConsentFormListener() {
@OverRide
public void onConsentFormLoaded() {
// Consent form loaded successfully.
}

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

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


                                Log.e("Consent Status upd. is"," "+consentStatus.toString());



                            }

                            @Override
                            public void onConsentFormError(String errorDescription) {
                                // Consent form error.



                               Log.e("Formerror "," "+errorDescription.toString());




                            }
                        })
                        .withPersonalizedAdsOption()
                        .withNonPersonalizedAdsOption()
                      //   .withAdFreeOption()
                        .build();


                form.load();
                form.show();

@MrPat
Copy link

MrPat commented May 22, 2018

@frankyxcs If you're using the Commonly Used list of ad providers, the consent form will always fail. Can only be used if you use a custom list with 12 or less providers (see the note under the Google-rendered consent form section here https://developers.google.com/admob/android/eu-consent)

@rampara
Copy link
Contributor

rampara commented May 22, 2018

+1 to @MrPat's comment.

@frankyxcs
Copy link
Author

Hmm im using only Google Admob Ads with my publisher id

So what can i do if i use only Google admob ?

getting the consent status and make my own dialog when the status is unknown ?
and then saving the consent like this for example:

in my dialog the user chooses non personalized then i can save it like this 👍

ConsentInformation.getInstance(context).setConsentStatus(ConsentStatus.NON_PERSONALIZED);

??? Any help if this way is ok would be good

@rampara
Copy link
Contributor

rampara commented May 22, 2018

@frankyxcs if you have more than 12 ad providers, you cannot use the Google rendered consent form and must implement obtaining consent from the user. Once collected, you can use the setConsentStatus() to set the consent status, just as you mentioned.

@frankyxcs
Copy link
Author

hi rampara . i know what you mean now !

if i want to choose my own list then google is pre selected but i cannot save the list only with one provide in admob ?? Maybe i understand something wrong but if i use only Admob from Google i should be able to make my own list with just 1 provider too ?

so first im getting consent status with my admob publisher id !

so consent status is unknown

so my way is own dialog
user choose for example non-personalized

and i save the consent like this:
ConsentInformation.getInstance(context).setConsentStatus(ConsentStatus.NON_PERSONALIZED);

then when i try to get the status again it says NON_PERSONALIZED and everything looks fine.

but i have to load the list with
List adProviders = ConsentInformation.getInstance().getAdProviders();
too before i save the status or is this not relevant ?

@frankyxcs
Copy link
Author

Hi ok i have made now my own list with 6 providers (and the status should have changed to custom providers) but the consent form is still not loading ??? i´m getting the same error.

what could be the problem now ? My code looks fine !

Maybe the consent sdk is not getting the status from admob that i´m using a custom list now ?

@frankyxcs
Copy link
Author

its working now .

@ieewbbwe
Copy link

The bad doc, I'm no need to use ConsentForm that always return info “Error: consent form can be used with custom provider selection only.” as i thought

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants