Android8.0 踩坑 Only fullscreen activities can request orientation 闪退问题解决

在升级Android应用至9.0时,遇到8.0系统因设置横竖屏和透明主题导致的启动闪退问题。此问题在Android 8.1及更高版本已修复。解决方案包括移除横竖屏设置或透明主题,或针对不同版本进行适配。通过创建values-v26和values-v27资源文件夹,分别设置不同版本的主题样式,确保8.0系统不使用透明主题。
摘要由CSDN通过智能技术生成

解决 Android8.0出现 Only fullscreen activities can request orientation 闪退问题

8月1号前Android版本targetSdkVersion至少都要升级到28,也就是9.0,不然不让更新上架,以前一直磨磨蹭蹭的不想更新,现在好了一下子从6.0升到9.0,这个累呀…经过一段时间的不懈努力,各种看官方文档,看各位大神的博客,总算是升级完毕,前些日子已经测试完成并上架更新了,现在空闲下来记录一下出现的问题来提醒自己吧。
6.0更新到9.0的话网上也很多博客,这里暂时不写了,下次再另外写一篇吧,这里主要是记录一下当时更新时比较严重的漏网之鱼吧:升级测试的时候或许公司测试机有限,还是说8.0系统很少了,6.0、7.0、8.1、9.0都测到了,唯独就是漏了8.0,偏偏问题就出现在8.0…(/哎)

更新上架第二天有客户反馈说刚刚更新的APP打不开, 启动直接闪退,华为荣耀8,系统Android8.0,第一反应是不会这么玄乎吧,我测了荣耀9都不会怎么偏偏8就会呢?(本人的手机是荣耀9),后来看了腾讯bugly,出现异常报错:java.lang.IllegalStateException :Only fullscreen opaque activities can request orientation,刚看到这个信息的时候蒙了,我去,这什么啊…后来网上搜一下才知道这个问题只出现在Android8.0系统上,8.1后已修复,这也算是8.0的bug吧。。
虽然出现了这个bug,可是为什么会出现呢?看了好多大神的博客,才知道出现这个bug是因为同时设置了透明主题跟横竖屏。

为什么会出现

字面意思是说 只有不透明的全屏 Activity 才可以设置横竖屏,半透明/对话框等不可设置横竖屏。

1、设置了方向(横竖屏,代码中写了setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
或者清单文件中加了 android:screenOrientation=“portrait”)
2、设置了透明主题样式(<item name=“android:windowIsTranslucent”>true</item>)
3、targetSdkVersion >= O (表示编译版本号大于等于26,最重要的还是=26)

解决

知道问题出在哪了,就好解决了,不过还是要进行适配,毕竟这个bug只出现在8.0上,8.1后已经不会了。
首先既然升级了说明targetSdkVersion >= O就肯定的了,没法改了,只能从方向跟透明样式两方面修改,去其一,要么不要设置方向,删除AndroidManifest中相应Activity的 android:screenOrientation=""属性;
要么不设置透明主题样式,删除相应Activity的theme中<item name=“android:windowIsTranslucent”>true</item>属性。像那种Dialog风格的透明样式的Activity还是使用Dialog实现.
这个就要看自己的代码跟业务需求了,我的话设置透明主题主要是用于侧滑关闭使用,而且只能竖屏显示,没的挑,只能去掉透明样式,然后不使用侧滑关闭了。
这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值