美文网首页Android 成长收录
Android8.0适配问题java.lang.IllegalS

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

作者: Dawn试点人工智能 | 来源:发表于2019-07-15 18:58 被阅读0次
    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>

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

    相关文章

      网友评论

        本文标题:Android8.0适配问题java.lang.IllegalS

        本文链接:https://www.haomeiwen.com/subject/qnsokctx.html