#Android8.0.0 API26系统版本发生crash,报错“Only fullscreen opaque activities can request orientation”

情况概述:

在维护项目中,为了适配个别全面屏手机,小豆 将targetSdkVersion从23升级为27,莫名爆出crash,导致app闪退,报错如下:


#Android8.0.0 API26系统版本发生crash,报错“Only fullscreen opaque activities can request orientation”_第1张图片
1.png

查看错误得知:原来是发生了个无效状态异常——只有全屏不透明的activity才可以设置方向,问题发生在SplashActivity.java上,主要是onCreate()方法,小豆按照继承关系一层一层地查找,在父类activity确实使用了半透明,SplashActivity.java的主题是使用的全屏,style.xml如下:


image.png

解决问题

虽然找到错误问题,但是始终不懂,targetSdkVersion为23的时候完全没有问题,升级后却出现问题,于是开始疯狂百度,使用网友的一些处理方法,可谓艰难险阻,耗时快一天,最后借鉴了一位博主的方法得以解决,修改如下:


#Android8.0.0 API26系统版本发生crash,报错“Only fullscreen opaque activities can request orientation”_第2张图片
image.png

并且引用setTheme(R.style.NoTranslucent);在SplashActivity的onCreate()方法的super.onCreate()之前,通过setTheme设置不带半透明属性的style。

总结

这个错误的原因就是:在Activity里主题设置了全屏且透明,并且该活动进行了横竖屏切换配置,在安卓系统8.0以上会出现奔溃,是系统问题,为了修改,去掉其一即可。

这是小豆遇到的比较坑的问题了,纪录一下。
这也是初入行业的小豆第一次写技术文章,如果技术方面有写得不对的,有需要改善的地方,希望大家评论纠正,谢谢大家。

你可能感兴趣的:(#Android8.0.0 API26系统版本发生crash,报错“Only fullscreen opaque activities can request orientation”)