ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android – 插页式Admob广告:“IllegalStateException:只有全屏活动可以请求定位”

2019-09-18 20:24:20  阅读:205  来源: 互联网

标签:android admob android-8-1-oreo


背景

我有一个使用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 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

事情是,它之前工作得很好.现在我不确定是什么导致它发生的.

在网上搜索,我没有看到任何谈论“只有全屏活动可以请求定位”的内容.

我在清单中所拥有的东西有点陈旧,可能不再需要了:

    <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

我试过的

>我试图删除清单条目.还是同样的问题.
>我试图通过强制将主题设置为“@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,android-8-1-oreo
来源: https://codeday.me/bug/20190918/1811640.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有