当三个条件同时满足的时候,系统会抛出"Only fullscreen activities can request orientation"异常。先分别来说说这三个条件都表示什么意思:
ActivityInfo.isFixedOrientation(requestedOrientation) —— 表示判断当前的|Activity是否固定了方向
fullscreen —— 表示Activity是否是透明的或者是否悬浮在Activity上,是透明的或者悬浮在Activity上fullscreen就等于false
appInfo.targetSdkVersion > O —— 表示编译版本号大于26
当以上的三个条件同时满足的时候,系统框架就会抛出异常,那意思我们只能让上面的条件不满足就可以了。如果你要适配8.0以上的版本那么第三个条件肯定是满足的,那么我们就只能从第一个和第二个条件入手,第二个条件是否是透明的activity即<item name="android:windowIsTranslucent">true</item> 设置为true,如果设置为false,就可以使第二个条件不满足,但是这样我们的activity的背景就不是透明的了,所以我们要activity透明,那么这个必须设置true,那么第二个条件也满足。那么我们只能从第一个条件入手即不固定activity的方向,但是这样还是有问题,原本我们的应用的其他界面的都是固定方向的,突然有一个不固定方向,用户体验会不太好。所以如果不是必须使用activity才能实现的功能,建议使用Dialog来实现透明Activity的效果。如果一定要使用透明的Activity并且要适配android 8.0以上,就只能不固定activity的方向才能解决报错问题。
————————————————
版权声明:本文为CSDN博主「LOVE宝」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LoveDou0816/article/details/79129324