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é:
- https://developers.google.com/admob/android/quick-start
- https://developers.google.com/admob/android/interstitial
Ce que j'ai essayé
-
J'ai essayé de supprimer l'entrée du manifeste. Toujours même problème.
-
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é.
-
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.
-
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é.
-
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.
-
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.
-
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.
-
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?
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
Vous devez vous connecter pour publier un commentaire.
Il semble que la mise à niveau vers:
résolu ce problème pour moi. J'ai juste testé sur Nexus 5X avec 8.1.0 et Interstitielle annonces Admob travail maintenant.
Solution plus complète:
application de la construire.gradle:
haut niveau de construction.gradle:
nop, je suis en utilisant 15.0.1, mais encore de la dose n'est pas,
Je suis toujours de voir ce en 17.x.x firebase annonces..
OriginalL'auteur Ziem
MODIFIER
Maintenant une nouvelle version d'admob est disponible.
Je confirme qu'en utilisant les dernières versions (15.0.1 ou plus récent) cette question n'apparaît pas plus, donc vous pouvez utiliser la dernière version d'Admob
réglage de la cible de la version la plus récente, si vous avez utilisé la solution de contournement suggéré précédemment.
----------------------------------------------------------
Définir la cible de l'API Android Niveau 26 pour résoudre le problème, en attendant Admob mise à jour
Dans la construction.gradle
si
targetSdkVersion
est >=27 (> android.os.Build.VERSION_CODES.O
qui est 26), vous obtenez cette erreur, ils ont changé ActivityRecord dans la dernière version d'Android en ajoutant ceci:Le changement a été introduit dans ce commit
et probablement dans admob lib ont foiré quelques
OK, a écrit une demande de supprimer cette restriction ici: issuetracker.google.com/issues/68454482
Semble que cela a résolu, mais lorsque ce problème se produit? Quand je l'ai jamais mis les targetSdk de la nouvelle, comment puis-je l'éviter?
vous devriez être en mesure de l'éviter si vous ne spécifiez pas de n'importe quelle orientation dans le manifeste pour la non-activité en plein écran
J'utilise 15.0.1, mais le problème persiste encore sur certains Android 8 périphériques qui ne sont pas tous, peut-être parce qu'ils utilisent le vieux google play la version du service de
OriginalL'auteur Silverstorm
essayez d'ajouter ceci dans votre manifeste
Ou, si vous utilisez appcompat:
Et dans le manifeste, assurez-vous que l'activité est déclarée auprès de
Cela fonctionne,. Merci bro vous avez sauvé ma VIE!! 😀
Cela fonctionne, Merci.
Mieux utiliser
Theme.Translucent.NoTitleBar.Fullscreen
, parce thème original deAdActivity
estTheme.Translucent
Pourquoi ne pas corriger ce que la priorité la plus élevée? C'est ridicule pour des milliers de développeurs à tous avez à faire exactement ce correctif après de nombreuses heures de recherche et malheureux utilisateurs, grâce à des accidents....
OriginalL'auteur Omar Mahmoud
merci de ne pas utiliser les propriétés dans Android fichiers Manifest adactivity que.
veuillez supprimer cette ligne de adactivity que dans le fichier de Manifeste
Juste il suffit d'ajouter cette ligne suivante au fichier Manifeste Android.
Si vous souhaitez définir votre activité désirée comme mode portrait, merci d'ajouter cette ligne suivante à votre activités méthode onCreate:
Pour firebase ANNONCES 17.0.0 et le haut des versions utiliser cette ligne au fichier manifeste.
Vous pouvez obtenir l'id de l'application de Admob -> Applications -> votre app -> Paramètres de l'Application -> Id d'Application. S'il vous plaît copiez et collez cette App_Id dans votre projet.
Ne pas corriger pour moi, soit: les services de google 4.0.1 / firebase-annonces 17.1.1 / API 28 Tarte
Aldasa TomV, veuillez suivre les mises à jour.
OriginalL'auteur Ahamadullah Saikat
Cette question sera Automatiquement fixé lors de l'annonce mob à jour leurs annonces sdk pour API 27
leurs annonces de dépendance ne prennent pas en charge l'API 27 donc à cause que cela se produise.
Seulement en plein écran les activités peuvent demander de l'orientation, cela est dû aux annonces des méta-données dans votre mainfest fichier,admob doivent mettre à jour leur sdk pour 27 version.
si vous avez défini des cibles version du sdk 27 ensuite, vous recevez cette erreur, en fait la mise à jour android sdk très rapide, et une mise à jour admob laissé faire ,pour l'intégration avec android sdk, donc admob ont dans l'attente de cette mise à jour, ils doivent le faire très vite ,Son pas sur le côté développeur question, si on veut s'échapper de ce crash, puis réglez votre sdk pour 26.
simplement en raison de la admob n'est pas mise à jour quand elle sera mise à jour de leurs dépendances est de diffuser des annonces avec android 8.0 son juste dû à admob côté de retard de mise à jour . il peut prendre des semaines, je l'espère. ensuite, il sera correct.
Où avez-vous obtenu cette capture d'écran? Faut-il dire que le correctif sera appliqué, et la version d'Admob?
Comment sur la terre, cela a PAS été encore fixée équipe de Google? C'est un très simple fix - pour quelque chose qui a été à l'origine de perturbation majeure pour tout le monde à l'aide de leur SDK pour plus d'un mois maintenant. J'ai pensé à la mise à jour du 18 décembre, cela a été corrigé. Aucune panne en AVDs plus, dans Android Studio, mais en regardant les derniers rapports d'incident - cela a toujours pas été corrigé dans la bibliothèque. Très frustrant de ne pas être en mesure de soutenir le dernier système d'exploitation.
Grand. On nous a dit de mettre à niveau le SDK dès que possible. Nous l'avons fait, nous nous sommes punis.
OriginalL'auteur Najaf Ali
J'ai eu le même cas de collision avec Vungle SDK (qui a été inclus par le biais de Appodeal SDK), ce qui ne permet pas de répondre précisément à la question concernant SDK Admob, mais au cas où quelqu'un se présente avec Vungle ou Appodeal SDK:
Les versions ont été comme suit: Appodeal SDK -
2.4.2-220518
, Vungle SDK -6.2.5
.Après la mise à jour à cette époque plus récente Appodeal SDK (version
2.4.9-051218
), les nouveaux Vungle kit de développement a été inclus (version6.3.12
) et l'accident n'est plus produite.Je l'ai mentionné Vungle et Appodeal parce que j'ai eu le même sauf que dans cette question (a été à essayer de comprendre quelle en est la cause), à part qu'il est lié à un autre réseau publicitaire. Part de mes conclusions dans l'affaire de quelqu'un d'autre est d'avoir un problème comme moi. Je pense que cela dépend de la situation individuelle si elles sont bonnes alternatives à Admob, je ne suis pas dans une position pour vous conseiller sur ce. Mais ils peuvent être utilisés de concert avec Admob.
OriginalL'auteur Adomas
Dans Android Oreo Vous ne pouvez pas changer l'orientation par le code de sorte que vous avez vérifier à chaque fois qu'un changement d'orientation
OriginalL'auteur Pankaj Jangid