Android 成长收录

Android8.0适配问题java.lang.IllegalS

2019-07-15  本文已影响0人  Dawn试点人工智能
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.Activity.InviteByContactActivity}: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

报这个错误时,说实话我是懵逼状态的,完全不知道咋回事。明明所有手机好使,就华为的手机,微信第三方登录报错。通过网上搜索查找,算是大概了解了下,罪魁祸首竟然是Android8.0适配问题。

在Android8.0环境下,如果一个Activity在Manifest中设置了方向(横,竖屏),即android:screenOrientation=”landscape”/”portrait”,并且指定的android:theme中使用的style带有透明属性

<item name="android:windowIsTranslucent">true</item>

那么在启动该Activity的时候在onCreate()中就会抛出异常

java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

字面意思就是说:只有不透明的全屏activity可以自主设置界面方向。

网上搜了搜,发现不是个例,这个问题出现在android8.0以上。原因是我们给Activity同时设置了 android:screenOrientation="" 和 <item name="android:windowIsTranslucent">true</item>。

通过了解,有两种解决方案:

1,删除AndroidManifest中相应Activity的 android:screenOrientation=""属性;

2,删除相应Activity的theme中<item name="android:windowIsTranslucent">true</item>属性。 二选一。

若两种效果都需要,只能另辟蹊径了。

在values-v26目录下,新建styles.xml做一个适配,估计不就这个问题就会得到解决。

<resources>

    <style name="FullScreen" parent="AppTheme">

        <item name="android:windowActionBar">false</item>

        <item name="android:windowNoTitle">true</item>

        <item name="android:windowFullscreen">true</item>

        <!-- 适配android手机系统8.0(api26),Only fullscreen opaque activities can request orientation -->

        <!--用背景图消除启动白屏-->

        <item name="android:windowIsTranslucent">false</item>

    </style>

</resources>

记录每次崩溃。愿对需要的人有所帮助。

上一篇下一篇

猜你喜欢

热点阅读