背景
我有一个使用Admob SDK的应用,用于显示插页式广告(全屏广告).
最近谷歌已经更新了SDK以及许多其他东西(构建工具,gradle插件,IDE等),包括admob(firebase ads).
compile 'com.Google.firebase:firebase-ads:11.4.2'
问题
更新后,我注意到只要应用尝试显示插页式广告,它就会崩溃.
崩溃日志是这样的:
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 VM10-28 14:01:01.406 4523-4523/... E/AndroIDRuntime: FATAL EXCEPTION: mainjava.lang.RuntimeException: Unable to start activity ComponentInfo{.../com.Google.androID.gms.ads.AdActivity}: java.lang.IllegalStateException: Only fullscreen activitIEs can request orIEntation
事情是,它之前工作得很好.现在我不确定是什么导致它发生的.
在网上搜索,我没有看到任何谈论“只有全屏活动可以请求定位”的内容.
我在清单中所拥有的东西有点陈旧,可能不再需要了:
<activity androID:name="com.Google.androID.gms.ads.AdActivity" androID:configChanges="keyboard|keyboardHIDden|orIEntation|screenLayout|uiMode|screenSize|smallestScreenSize" androID:theme="@androID:style/theme.Translucent"/>
我说它可能不需要,因为我不能在教程中看到它,即使我记得我过去做过:
> https://developers.google.com/admob/android/quick-start
> https://developers.google.com/admob/android/interstitial@H_502_40@
我试过的
>我试图删除清单条目.还是同样的问题.
>我试图通过强制将主题设置为“@androID:style / theme.Translucent.NoTitlebar.Fullscreen”,但它也没有帮助.
>我甚至认为这可能是因为我目前使用的是AndroID 8.1,但是当我尝试使用Play商店中的应用程序时,我注意到它工作正常,没有崩溃.
>我试图回到admob的版本11.2.2并使用gradle v 2.3.3,但它也没有帮助.
>尝试使用AndroID 7.0的模拟器时,它可以正常使用最新版本的所有内容,并删除整个清单活动标记.
>我试图在gradle文件中使用它,而不是我使用的:
编译’com.Google.androID.gms:play-services-ads:11.4.2′
仍在我的设备上崩溃(Nexus 5x与AndroID 8.1)但在模拟器上没有崩溃.
>最后,我尝试在AndroID 8.1的模拟器上运行应用程序,它就像在真实设备上一样崩溃.
>向Google Admob团队以及Android issue tracker报告此事.我希望他们能回答我这个问题.
问题
这个问题可能是什么原因?
是因为AndroID 8.1吗?如果是这样,为什么旧版本的应用程序运行良好?我试图将那些旧版本的版本还原,但它仍然崩溃了.
而且,最重要的是,我该如何解决它?
解决方法:
似乎升级到:
com.Google.firebase:firebase-ads:15.0.1
为我解决了这个问题.我刚刚在带有8.1.0的Nexus 5X上进行了测试,现在还有插页式Admob广告.
更完整的解决方案
app的build.gradle:
...androID { compileSdkVersion 27 buildToolsversion '27.0.3' defaultConfig { ... targetSdkVersion 27 .. }}dependencIEs { ... implementation 'com.Google.firebase:firebase-core:15.0.2' implementation 'com.Google.firebase:firebase-ads:15.0.1' ...}apply plugin: 'com.Google.gms.Google-services'
顶级build.gradle:
buildscript { ... dependencIEs { ... classpath 'com.Google.gms:Google-services:3.3.0' ... }}...
总结 以上是内存溢出为你收集整理的android – 插页式Admob广告:“IllegalStateException:只有全屏活动可以请求定位”全部内容,希望文章能够帮你解决android – 插页式Admob广告:“IllegalStateException:只有全屏活动可以请求定位”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)