必须先调用AdMob崩溃" requestFeature()才能添加内容"

时间:2016-10-24 23:15:43

标签: android admob

首先,这不是我自己经历过的问题。点击测试广告可以在我的所有设备上正常使用。但是,我收到了一些用户(不使用root或Xposed)的崩溃报告。

Exception java.lang.RuntimeException: Unable to start activity ComponentInfo{com.geecko.QuickLyric/com.google.android.gms.ads.AdActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2656)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2721)
android.app.ActivityThread.access$900 (ActivityThread.java:168)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1393)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:135)
android.app.ActivityThread.main (ActivityThread.java:5753)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1405)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1200)
arrow_drop_down
Caused by android.util.AndroidRuntimeException: requestFeature() must be called before adding content
com.android.internal.policy.impl.PhoneWindow.requestFeature (PhoneWindow.java:354)
android.app.Activity.requestWindowFeature (Activity.java:3762)
com.google.android.gms.ads.internal.overlay.k.a (:com.google.android.gms.DynamiteModulesA:284)
com.google.android.gms.ads.internal.overlay.client.c.onTransact (:com.google.android.gms.DynamiteModulesA:58)
android.os.Binder.transact (Binder.java:380)
com.google.android.gms.internal.zzhm$zza$zza.a ()
com.google.android.gms.ads.AdActivity.onCreate ()
android.app.Activity.performCreate (Activity.java:6112)
android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1117)
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2609)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2721)
android.app.ActivityThread.access$900 (ActivityThread.java:168)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1393)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:135)
android.app.ActivityThread.main (ActivityThread.java:5753)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1405)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1200)

AdActivity声明两次。一旦进入aar清单,一次进入我的。

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

如您所见,我的包名几乎不存在于堆栈跟踪中。此外,我显然不负责为AdActivity调用requestFeature()或setContent() - 我根本没有弄乱它。

对于一些用户(三星,LG,小米,华为,......运行API 19到23)而言,这种情况非常奇怪,但并非所有用户都出现这种情况。无论我怎么努力,都不适合我。

我怀疑这可能与ProGuard有关。

1 个答案:

答案 0 :(得分:2)

Pierre-Yves Ricau提供的

This fix旨在修复IMM漏洞,但事实证明这是导致此问题的原因。

解决方案隐藏在评论中:

  

使用onActivityStarted(Activity)代替onActivityCreated(Activity,Bundle)

崩溃是我固定的。