Interstitielle annonces Admob: “l'exception IllegalStateException: Seules les activités en plein écran peut demander de l'orientation”

Fond

J'ai une application avec SDK Admob utilisé pour afficher des annonces Interstitielles (publicités en plein écran).

Reccently Google a mis à jour le SDK, ainsi que beaucoup d'autres choses (outils de construction, plugin gradle, IDE, etc...), y compris admob (firebase annonces).

compile 'com.google.firebase:firebase-ads:11.4.2'

Le problème

Après la mise à jour, j'ai remarqué qu'à chaque fois que l'application tente de montrer un Interstitiel, il se bloque.

Le crash est en tant que tel:

10-28 14:01:01.394 4523-4523/... I/Ads: Ad opening.
10-28 14:01:01.400 1606-2154/? E/ActivityManager: Activity Manager Crash. UID:10080 PID:4523 TRANS:63
                                                  java.lang.IllegalStateException: Only fullscreen activities can request orientation
                                                      at com.android.server.am.ActivityRecord.setRequestedOrientation(ActivityRecord.java:2189)
                                                      at com.android.server.am.ActivityManagerService.setRequestedOrientation(ActivityManagerService.java:4975)
                                                      at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:1101)
                                                      at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2927)
                                                      at android.os.Binder.execTransact(Binder.java:697)


10-28 14:01:01.403 4523-4523/... D/AndroidRuntime: Shutting down VM
10-28 14:01:01.406 4523-4523/... E/AndroidRuntime: FATAL EXCEPTION: main

java.lang.RuntimeException: Unable to start activity ComponentInfo{.../com.google.android.gms.ads.AdActivity}: java.lang.IllegalStateException: Only fullscreen activities can request orientation

Chose, c'est que ça marchait bien avant. Maintenant, je ne suis pas sûr de ce qu'il provoque à se produire.

Recherche sur le web, je ne vois rien qui parle de "Seulement fullscreen activités peuvent demander de l'orientation" .

Ce que j'avais dans le manifeste, est quelque chose d'un peu vieux, qui ne pourrait pas être plus nécessaire:

    <activity
        android:name="com.google.android.gms.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        android:theme="@android:style/Theme.Translucent"/>

Je dis que c'est probablement pas nécessaire, parce que je ne peux plus la voir dans les tutos, même si je m'en souviens je l'ai fait dans le passé:

Ce que j'ai essayé

  1. J'ai essayé de supprimer l'entrée du manifeste. Toujours même problème.

  2. J'ai essayé de définir le thème "@android:style/Thème.Translucide.NoTitleBar.Fullscreen" par la force, mais il n'a pas aidé.

  3. J'ai même pensé qu'il pourrait être parce que j'ai actuellement Android 8.1, mais quand j'ai essayé d'utiliser l'application depuis le play store, j'ai remarqué qu'il a très bien fonctionné, sans se bloque.

  4. J'ai essayé de retourner jusqu'à la version 11.2.2 de admob et l'utilisation gradle v 2.3.3 , mais il n'a pas aidé.

  5. En essayant sur un émulateur Android avec la version 7.0 , il a bien fonctionné avec les dernières versions de tout, et le retrait de l'ensemble du manifeste de l'activité de la balise.

  6. J'ai essayé de l'utiliser dans gradle fichier, au lieu de ce que j'ai utilisé :

    compiler 'com.google.android.gms:jouer-services-petites annonces:11.4.2'

Encore s'est écrasé sur mon téléphone (Nexus 5 fois avec Android 8.1), mais de ne pas planter sur émulateur.

  1. Enfin, j'ai essayé d'exécuter l'application sur l'émulateur Android avec 8.1, et il s'est écrasé juste que sur le périphérique réel.

  2. Indiqué sur ce à Google Admob de l'équipe, ainsi que Android bug tracker. J'espère qu'ils vont me répondre à ce sujet.

Les questions

Ce qui pourrait être la cause de ce problème?

C'est à cause de Android 8.1 ? Si oui, comment se fait l'ancienne version de l'application a bien fonctionné? J'ai essayé de revenir, il y a beaucoup de versions plus anciennes, mais encore, il s'est écrasé.

Et, plus important encore, comment puis-je le résoudre?

Je pense qu'ils sont censés libérer jouer de la bibliothèque de services de ciblage de la version 8.1 et il comprendra ce correctif. (ils ont sorti seulement une bibliothèque de prise en charge, quand ils libèrent généralement à la fois de soutien et de jouer à des services de bibliothèques lorsqu'il y a un kit de développement logiciel de mise à jour)
La moitié d'une année a passé, et le problème est toujours d'actualité 😐 Essayé la dernière version firebase-ads:11.8.0

OriginalL'auteur android developer | 2017-10-28