admob 兼容android 8.0 的方法

問題
admob在部分 8.0 android機型顯示全屏廣告時crash了
答案
https://stackoverflow.com/questions/47750609/admob-interstitialadd-not-showing-in-8-0-0

接下來詳細介紹一下
下面的log表明,全屏activity才能請求orientation,所以只要讓廣告activity變成全屏activity就行了

java.lang.RuntimeException: Unable to start activity ComponentInfo{bible.bibleinbasicenglish/com.google.android.gms.ads.AdActivity}: java.lang.IllegalStateException: Only fullscreen activities can request orientation
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThreadH.handleMessage(ActivityThread.java:1593) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteMethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.IllegalStateException: Only fullscreen activities can request orientation

方案
1 用最新的廣告庫
最新的廣告庫會兼容

2
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
tools:replace="android:theme"
/>

這個是直接更新了theme,replace是替換操作,相關(guān)文檔可以在google查閱
作用:在manifest中提供一種配置的hack方案,可以靈活更改一些配置。因為有些東西改變不了源碼,就合并manifest時提供合并策略

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容