java.lang.IllegalStateException: Only fullscreen activities can request orientation
文章目录
- 1,问题
- 2,原因
- 3,解决
1,问题
升级target version28后出现
java.lang.IllegalStateException: Only fullscreen activities can request orientation / Only fullscreen opaque activities can request orientation
2,原因
安卓源码全局搜索该报错信息发现:
版本26的源码是这样晒的,
if (ActivityInfo.isFixedOrientation(requestedOrientation) && !fullscreen&& appInfo.targetSdkVersion > O) {throw new IllegalStateException("Only fullscreen activities can request orientation");}
版本27的源码是这样晒的:
if (ActivityInfo.isFixedOrientation(requestedOrientation) && !fullscreen&& appInfo.targetSdkVersion >= O_MR1) {throw new IllegalStateException("Only fullscreen activities can request orientation");
}
26和27源码是一样(其它版本源码没有这个错误),可以看出全部满足下面四个条件会报错:
1),Activity固定方向,无论是代码里还是清单文件里配置的
2),isTranslucentOrFloating(fullscreen = ent != null && !ActivityInfo.isTranslucentOrFloating(ent.array);)
public static boolean isTranslucentOrFloating(TypedArray attributes) {final boolean isTranslucent =attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsTranslucent,false);final boolean isSwipeToDismiss = !attributes.hasValue(com.android.internal.R.styleable.Window_windowIsTranslucent)&& attributes.getBoolean(com.android.internal.R.styleable.Window_windowSwipeToDismiss, false);final boolean isFloating =attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsFloating,false);return isFloating || isTranslucent || isSwipeToDismiss;}
3),targetSdkVersion > O
4),报错的手机为26或者27的安卓手机系统
3,解决
对应上面的原因,只要让其中任一个条件不满足就可以了,所以有以下几种方法,任一条都可以:
1,修改Activity的android:screenOrientation portrait或landscape属性值为behind(表示和前一个Activity方向一致),或者去除设置方向的代码(如去除setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);)。
2,修改主题中的windowIsTranslucent、windowSwipeToDismiss、windowIsFloating等属性值,如
<item name="android:windowIsTranslucent">false</item>
3,将build.gradle中的targetSdkVersion降到26或以下。
4,添加针对8.0和8.1的系统的判断,满足上面任一条件也可以。
当然,网上也有人提供通过反射,修改其中的判断条件ActivityInfo的属性值screenOrientation为SCREEN_ORIENTATION_BEHIND、SCREEN_ORIENTATION_UNSPECIFIED等,本质也是针对上面四种条件的修改,但是个人不建议如此修改,因为不能保证你修改的地方系统其它地方不会用到(导致未知波及)。
java.lang.IllegalStateException: Only fullscreen activities can request orientation相关推荐
- Android Only fullscreen opaque activities can request orientation
原因 错误是由全屏透明 Activity 引起的 Caused by: java.lang.IllegalStateException: Only fullscreen opaque activiti ...
- Android8.0适配-Only fullscreen opaque activities can request orientation
背景 2018年7月18日上午,电信终端产业协会(TAF)发布<移动应用软件高API等级预置与分发自律公约>(以下简称<公约>).OPPO.华为.百度.360.阿里.小米.VI ...
- 安卓开发——android8.0应用崩溃,报错: Only fullscreen opaque activities can request orientation
上周末升级了最新的MIUI 8.1.18开发版,早早的吃上了奥利奥 Android O(虽然在miui下并没有什么变化(-_-),但还是很开心的,毕竟我的小米MIX2终于可以用到了之前只是内测的全屏手 ...
- android opaque,Android 8.0系统 Only fullscreen opaque activities can request orientation
最近在华为8.0系统的手机中遇到Only fullscreen opaque activities can request orientation Caused by: java.lang.Illeg ...
- java.lang.IllegalStateException: Calling [asyncError()] is not valid for a request with Async state
1.这个问题是在搭建spring-admin监控的时候发现的, 版本如下 spring-boot: 2.1.7.RELEASE spring-boot-admin:2.1.5 问题的相关描述看这里 h ...
- 记一次错误:java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STOPPED
这两天测试给提了个BUG,具体现象是:调用es查询数据的接口进行过一次查询,过几分钟之后再次用这个接口进行查询就不行了,日志抛错堆栈如下: java.lang.IllegalStateExceptio ...
- 解决java.lang.IllegalStateException: getOutputStream() has already been called for this response
简单的说:用了流之后关掉即可. 下面详细说明: 出现了java.lang.IllegalStateException: getOutputStream() has already been calle ...
- java服务器错误怎么解决_如何解决java.lang.IllegalStateException:服务器处于错误状态异常...
我正在尝试在核心 java项目(swing应用程序)中部署restful web-service.我正在使用jersy. 我已经搜索到谷歌的许多网站,但我无法找到为什么这附加. public clas ...
- java.lang.IllegalStateException: getOutputStream() has already been ca...
tomcat正常启动. 但是一出来有验证码的页面,后台就会报错: 信息: Server startup in 13157 ms 2008-01-09 21:35:40,390 ERROR [org.a ...
- java.lang.IllegalStateException: getWriter() has already been called for this response问题解决
java.lang.IllegalStateException: getWriter() has already been called for this response 在执行下述代码时报错, O ...
最新文章
- Resteasy集成Spring
- android opengl es 纹理 不同设备 白色,android – OpenGL ES 2.0纹理没有在某些设备上显示...
- 不显示调用super_让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第7篇
- android问题记录
- 2021-04-05
- Python基于seaborn绘制喜欢的热力图,不同色系一览
- 远程服务器返回错误 (411) 所需的长度。
- 空号检测、号码状态查询接口免费测试、精准实时版(支持携号转网查询)
- Slate轨道工具使用(三)—位置还原问题修复
- linux 定时任务方法,Linux设置定时任务方法步骤
- 计算机开机检测dhcp,电脑开机显示dhcp是什么意思
- 网页上的文字不能复制怎么办?
- kafka Process ‘command ‘/jdk1.8.0_77/jre/bin/java.exe finished with non-zero exit value 1
- 北斗导航 | ARAIM算法初探:使用精密单点定位(PPP)技术的ARAIM:解分离
- 虚幻引擎学习笔记——Month1 Week3
- simplexmlelement object php,php – 访问SimpleXMLElement对象的某些属性
- 字符串的方法练习------Python篇
- 谷粒商城-分布式事务
- 小米路由器开启外网访问SSH和WEB管理界面
- 重生强化【Reincarnating RL】论文梳理