文章目录

  • 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相关推荐

  1. Android Only fullscreen opaque activities can request orientation

    原因 错误是由全屏透明 Activity 引起的 Caused by: java.lang.IllegalStateException: Only fullscreen opaque activiti ...

  2. Android8.0适配-Only fullscreen opaque activities can request orientation

    背景 2018年7月18日上午,电信终端产业协会(TAF)发布<移动应用软件高API等级预置与分发自律公约>(以下简称<公约>).OPPO.华为.百度.360.阿里.小米.VI ...

  3. 安卓开发——android8.0应用崩溃,报错: Only fullscreen opaque activities can request orientation

    上周末升级了最新的MIUI 8.1.18开发版,早早的吃上了奥利奥 Android O(虽然在miui下并没有什么变化(-_-),但还是很开心的,毕竟我的小米MIX2终于可以用到了之前只是内测的全屏手 ...

  4. 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 ...

  5. 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 ...

  6. 记一次错误:java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STOPPED

    这两天测试给提了个BUG,具体现象是:调用es查询数据的接口进行过一次查询,过几分钟之后再次用这个接口进行查询就不行了,日志抛错堆栈如下: java.lang.IllegalStateExceptio ...

  7. 解决java.lang.IllegalStateException: getOutputStream() has already been called for this response

    简单的说:用了流之后关掉即可. 下面详细说明: 出现了java.lang.IllegalStateException: getOutputStream() has already been calle ...

  8. java服务器错误怎么解决_如何解决java.lang.IllegalStateException:服务器处于错误状态异常...

    我正在尝试在核心 java项目(swing应用程序)中部署restful web-service.我正在使用jersy. 我已经搜索到谷歌的许多网站,但我无法找到为什么这附加. public clas ...

  9. java.lang.IllegalStateException: getOutputStream() has already been ca...

    tomcat正常启动. 但是一出来有验证码的页面,后台就会报错: 信息: Server startup in 13157 ms 2008-01-09 21:35:40,390 ERROR [org.a ...

  10. java.lang.IllegalStateException: getWriter() has already been called for this response问题解决

    java.lang.IllegalStateException: getWriter() has already been called for this response 在执行下述代码时报错, O ...

最新文章

  1. Resteasy集成Spring
  2. android opengl es 纹理 不同设备 白色,android – OpenGL ES 2.0纹理没有在某些设备上显示...
  3. 不显示调用super_让不懂编程的人爱上iPhone开发(2017秋iOS11+Swift4+Xcode9版)-第7篇
  4. android问题记录
  5. 2021-04-05
  6. Python基于seaborn绘制喜欢的热力图,不同色系一览
  7. 远程服务器返回错误 (411) 所需的长度。
  8. 空号检测、号码状态查询接口免费测试、精准实时版(支持携号转网查询)
  9. Slate轨道工具使用(三)—位置还原问题修复
  10. linux 定时任务方法,Linux设置定时任务方法步骤
  11. 计算机开机检测dhcp,电脑开机显示dhcp是什么意思
  12. 网页上的文字不能复制怎么办?
  13. kafka Process ‘command ‘/jdk1.8.0_77/jre/bin/java.exe finished with non-zero exit value 1
  14. 北斗导航 | ARAIM算法初探:使用精密单点定位(PPP)技术的ARAIM:解分离
  15. 虚幻引擎学习笔记——Month1 Week3
  16. simplexmlelement object php,php – 访问SimpleXMLElement对象的某些属性
  17. 字符串的方法练习------Python篇
  18. 谷粒商城-分布式事务
  19. 小米路由器开启外网访问SSH和WEB管理界面
  20. 重生强化【Reincarnating RL】论文梳理

热门文章

  1. 跨站请求伪造(CSRF)
  2. 电压跟随器Voltage Follower
  3. 塑料成型计算机模拟技术,塑料成型模拟软件技术基础与应用
  4. 前端开发过程中经常遇到的问题以及对应解决方法 (持续更新)
  5. windows最好用的mp3格式转换软件推荐
  6. Arduino 系列传感器应用
  7. 毕设外文文献查找方法
  8. Android SDK Tools 历史版本下载
  9. 闲置台式机+文件服务器,闲置主机秒变家用NAS,让你的闲置电脑变存储中心
  10. 计算机内部复制粘贴文件速度慢,电脑复制粘贴速度慢为什么