今天在三星S8上遇见一个奇葩问题Only fullscreen opaque activities can request orientation

一、出现场景

  • 三星手机S8 android 8.0
  • targetSdkVersion 27
  • 透明Activity

二、解决方案

manifest中移除android:screenOrientation="portrait"

三、原因(源码中寻找)

查看Android 8.0源码

3.1、ActivityRecord#setRequestedOrientation

有几个条件:

  • 非全屏 !fullscreen
  • targetSdkVersion的设置为大于26 appInfo.targetSdkVersion > O
  • ActivityInfo.isFixedOrientation(requestedOrientation)

所以下边来跟踪一下ActivityInfo.isFixedOrientation(requestedOrientation)

3.2、跟踪ActivityInfo.isFixedOrientation(requestedOrientation)

继续跟踪isFixedOrientationPortrait(int orientation)

最后的原因找到了,就是因为orientation == SCREEN_ORIENTATION_PORTRAIT

3.3、总结一下

  • 如果一个 targetSdkVersion>26的Android App
  • 运行在Android 8.0(含) 以上的设备上时
  • 如果启动的Activity为透明Activity

screenOrientation 需为默认状态

四、Google为什么这么做?

在 stackoverflow 中看到一句话。

这句话,我在google官方文档上并没有找到依据,但经过我的验证是正确的

If you use a fullscreen transparent activity, there is no need to specify the orientation lock on the activity. It will take the configuration settings of the parent activity. So if the parent activity has in the manifest:

这种情况下,透明Activity使用的是栈中,上一层可见Activity的orientation设定。仔细想一想是合理的,因此这并不是一个bug。

五、最后重申一遍解决方案

综上所述,移除android:screenOrientation="portrait" 的解决方案,完全符合Google的设计本意,并非Bug

= THE END =

一文分析 Only fullscreen opaque activities can request orientation 报错原因及解决方案相关推荐

  1. Android之Only fullscreen opaque activities can request orientation

    1 问题 使用透明的activity主题,并且固定了方向,在Android8.0手机上提示错误如下 Only fullscreen opaque activities can request orie ...

  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. 分享qq报错Only fullscreen opaque activities can request orientation

    这两天突然发现了一个项目中分享链接到qq时崩溃但分享到微信却啥事没有的问题,然后连上usb,查看error发现报了这样一个错:Only fullscreen opaque activities can ...

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

  6. Android Only fullscreen opaque activities can request orientation

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

  7. Only fullscreen opaque activities can request orientation

    这个问题是在android8.0以上的手机测试出来的 自己的处理方法 把配置文件中 android:screenOrientation="portrait" 删除即可.

  8. TypeError: fullscreen error at HTMLInputElement.toggleFullscreen 报错原因与解决方案

    在使用iframe进行内容嵌套时候,如果内层页面有全屏的功能,点击内层全屏功能,就可能出现上述报错. 原因: iframe是有一个默认的属性allowfullscreen,默认值为false,默认不支 ...

  9. 通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0......

    原文:[原创]通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 'incorrect string value: '\xF0... 这篇blog重点在解决问题,如果你对 ...

  10. 一文分析 Web3 尚未被主流采用的 6 个主要原因

    作者:ChainLinkGod,编译:DeFi 之道 东寻 图片来源:由无界版图 AI生成 Web3 代表了我们今天所知道的互联网的基本演变,用去中心化的协议和社区保留的所有权取代了中心化的看门人和中 ...

最新文章

  1. 零基础如何学习Java?你要注意的8件事
  2. 交换机的特点及工作原理
  3. html 转换xslt,XSLT xsl:template 元素
  4. html边框为框,HTML 为元素设置边框
  5. 计蒜客 《程序设计竞赛体验课程》第一部分 快速提升代码能力
  6. SQLServer分页查询
  7. Python代码调试之异常回溯
  8. iView学习笔记(四):Form表单操作
  9. linux python mysqldb安装包,linux环境下python中MySQLdb模块的安装方法
  10. 电脑显示器尽快触摸化
  11. wx2540h配置教程_H3C WX2540H系列无线控制器 安装指导-6W101
  12. oracle11 ssd 补丁,新装Oracle 11gR2 11.2.0.2重要说明——Patchset p10098816(附补丁下载地址).docx...
  13. hdoj4826Labyrinth【dp】
  14. 《大数据》第1期“专题”——大数据与智慧城市
  15. 计算机组成原理——计算机硬件组成原理(冯诺依曼和现代计算机)
  16. 实习周记---20180609
  17. 国仁网络资讯:短视频拍摄如何上热门;掌握这8大拍摄运镜手法即可。
  18. wy的leetcode刷题记录_Day45
  19. linux 查看端口占用总数_Linux查看某个端口的连接数
  20. 曲面细分着色器与几何着色器

热门文章

  1. 宝塔php不能上传大文件,解决BT宝塔无法上传大文件的方法,请收藏
  2. OpenGL光源光照使用范例
  3. 消息队列之kafka在虚拟机安装使用与整合springboot详解教程
  4. 【数值预报】按时间维度合并/重新生成nc、grib网格数据(按天、小时组织的文件合并成按月组织文件)
  5. 做国外广告联盟:你要学会这些运作方法
  6. 【3D目标检测】点云数据 To 360度全景图
  7. python培训学费多少钱-北京python培训学费多少钱?
  8. qcap 教程_给winpe添加explorer教程(续):文件列表
  9. Linux权限中x是什么意思,linux里的drwxr-xr-x代表的意思
  10. 辣侃情恋男女的犀利段子