web-dev-qa-db-fra.com

facebook + Android: seules les activités opaques en plein écran peuvent demander une orientation

Version du SDK Facebook 4.27.0

Version du système d'exploitation Android 8.0

L'application se bloque à l'exception, voici le journal de suivi que j'ai trouvé sur Crashlytics:

Fatal Exception: Java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxx.yyy/com.facebook.FacebookActivity}: Java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
       at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2822)
       at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2897)
       at Android.app.ActivityThread.-wrap11(Unknown Source)
       at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1598)
       at Android.os.Handler.dispatchMessage(Handler.Java:105)
       at Android.os.Looper.loop(Looper.Java:251)
       at Android.app.ActivityThread.main(ActivityThread.Java:6563)
       at Java.lang.reflect.Method.invoke(Method.Java)
       at com.Android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.Java:240)
       at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:767)
Caused by Java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
       at Android.app.Activity.onCreate(Activity.Java:986)
       at Android.support.v4.app.SupportActivity.onCreate(SupportActivity.Java:66)
       at Android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.Java:285)
       at com.facebook.FacebookActivity.onCreate(FacebookActivity.Java:62)
       at Android.app.Activity.performCreate(Activity.Java:6975)
       at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1214)
       at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2775)
       at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2897)
       at Android.app.ActivityThread.-wrap11(Unknown Source)
       at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1598)
       at Android.os.Handler.dispatchMessage(Handler.Java:105)
       at Android.os.Looper.loop(Looper.Java:251)
       at Android.app.ActivityThread.main(ActivityThread.Java:6563)
       at Java.lang.reflect.Method.invoke(Method.Java)
       at com.Android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.Java:240)
       at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:767)

Est-ce que quelqu'un peut m'aider avec ça ?

PS: Dans Android Source, après avoir regardé cette ligne numéro 987, il semble que cette ligne soit la coupable.

https://Android.googlesource.com/platform/frameworks/base.git/+/master/core/Java/Android/app/Activity.Java#1002

Aussi, dans mon manifeste:

<activity
    Android:name="com.facebook.FacebookActivity"
    Android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    Android:label="@string/app_name"
    Android:screenOrientation="portrait" />
25
Chintan Soni

Suppression de cet attribut:

Android:screenOrientation="portrait"

à partir de la balise FacebookActivity, peut résoudre le problème.

31
Chintan Soni

Lorsque j'ai supprimé ce <item name="Android:windowIsTranslucent">true</item> du problème de style a été résolu.

2
Yuri Misyac

Dans le dernier guide d'intégration de fb, nous n'avons pas besoin de spécifier le thème ou l'orientation qui provoque le crash sur Android 8.0. Nous devons donc utiliser le dernier fb sdk avec leurs nouveaux paramètres:

<activity Android:name="com.facebook.FacebookActivity"
    Android:configChanges=
            "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    Android:label="@string/app_name" />

https://developers.facebook.com/docs/facebook-login/Android/#manifest

0
thanhbinh84

supprimez cette ligne de votre menu de style

  <item name="Android:windowIsTranslucent">true</item>
0

Modifié

<style name="AppTheme" parent="Android:Theme.Translucent.NoTitleBar"></style>`

à

 <style name="AppTheme" parent="Android:Theme.Holo.NoActionBar.TranslucentDecor"></style>

puis retirez

<item name="Android:windowIsTranslucent">true</item>
0
Ömür TEKİN