最近由于要接入一个三方的jar将项目的compileSdkVersion和targetSdkVersion版本升级到了28(原来是26),测试人员在测试时发现android8.0.0版本的手机会莫名crash,crash的原因就是Only fullscreen activities can request orientation。

在我项目的代码中由于用到了滑动返回,为了更好的效果在manifest.xml中将activity的style设定成了透明的,同时我们也规定了页面只能竖向使用,于是这两个条件加上android8.0.0的机制问题就来了。

有了问题没关系,解决问题于是我们找到了一个技术贴,写的不错很详细这里附上链接https://blog.csdn.net/starry_eve/article/details/82777160

大佬总结了两种crash的原因如下:

1.Activity的风格为透明,在manifest文件中指定了一个方向,则在onCreate中crash。

2.Activity的风格为透明,如果调用setRequestedOrientation方法固定方向,则crash。

这两种crash都是只有android8.0.0版本出现的,8.1.0以后就已经修复了,所以我们需要对8.0.0版本进行特殊处理,处理方法如下:

在所有activity的基类BaseActivity中添加下面的逻辑

    //在onCreate的时候,先判断,如果透明,直接把方向改为SCREEN_ORIENTATION_UNSPECIFIED:@Overrideprotected void onCreate(Bundle savedInstanceState) {if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O && isTranslucentOrFloating()) {boolean result = fixOrientation();XLog.i(XLog.BASE, "onCreate fixOrientation when Oreo, result = " + result);}super.onCreate(savedInstanceState);}private boolean fixOrientation(){try {Field field = Activity.class.getDeclaredField("mActivityInfo");field.setAccessible(true);ActivityInfo o = (ActivityInfo)field.get(this);o.screenOrientation = -1;field.setAccessible(false);return true;} catch (Exception e) {e.printStackTrace();}return false;}private boolean isTranslucentOrFloating(){boolean isTranslucentOrFloating = false;try {int [] styleableRes = (int[]) Class.forName("com.android.internal.R$styleable").getField("Window").get(null);final TypedArray ta = obtainStyledAttributes(styleableRes);Method m = ActivityInfo.class.getMethod("isTranslucentOrFloating", TypedArray.class);m.setAccessible(true);isTranslucentOrFloating = (boolean)m.invoke(null, ta);m.setAccessible(false);} catch (Exception e) {e.printStackTrace();}return isTranslucentOrFloating;}//然后在设置方向的时候如果透明,直接不执行:@Overridepublic void setRequestedOrientation(int requestedOrientation) {if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O && isTranslucentOrFloating()) {XLog.i(XLog.BASE, "avoid calling setRequestedOrientation when Oreo.");return;}super.setRequestedOrientation(requestedOrientation);}

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. Android之Only fullscreen opaque activities can request orientation

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

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

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

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

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

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

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

  7. Only fullscreen opaque activities can request orientation

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

  8. 实测解决:SpringBoot 中 Invalid character found in the request target 异常

    实测解决:SpringBoot 中 Invalid character found in the request target 异常 ​ 原因: SpringBoot 2.0.0 以上都采用内置tom ...

  9. orcal 数据库 maven架构 ssh框架 的全xml环境模版 及常见异常解决

    创建maven项目后,毫不犹豫,超简单傻瓜式搞定dependencies(pom.xml 就是maven的依赖管理),这样你就有了所有你要的包 <project xmlns="http ...

  10. 基于 Kubernetes 的 Jenkins 主从通信异常解决

    基于 Kubernetes 的 Jenkins 主从通信异常解决 问题描述 基于 Kubernetes 部署 Jenkins 动态 slave 后,运行 Jenkins Job 会抛java.nio. ...

最新文章

  1. 计算机和路由器连接后IP地址受限制或无连接情况的处理
  2. linux 管理 服务,Linux服务管理 详述
  3. container and Injection
  4. object对象进行深拷贝
  5. 第4节 常见软件安装-Mysql和SQLyog
  6. 如何下载matlab,如何下载MATLAB?
  7. 联想微型计算机扬天M4000e,联想扬天M4000e-00评测:傲腾内存加持下的商务整机
  8. 推荐一款免费开源的pdf编辑器
  9. vue开发环境搭建(WebStorm)
  10. python 存根_python - 内联类型注释与存根会导致不同的mypy行为 - SO中文参考 - www.soinside.com...
  11. 元气骑士如何获得机器人成就皮肤_《元气骑士》听过浮游炮大礼包吗?有利于快速获取机器人的皮肤!...
  12. printvertically Java_Print Words Vertically in JavaScript
  13. python获取游戏窗口_python中pygame针对游戏窗口的显示方法实例分析(附源码)
  14. 定解问题(一)| 通解与特解 + 适定性 | 偏微分方程(五)
  15. 阿里云ACP认证(SLB专项)
  16. zeppelin 连接 spark报错
  17. java编写一个学生类和教师类,Java创建一个学生类
  18. 3种有效的小米手机数据恢复方法
  19. Flutter 3 发布了(文末推荐一个免费的在线Flutter学习教程)
  20. Java基础(08) 面向对象

热门文章

  1. 中职教计算机专业发展,中等职业教育中计算机专业教育思考
  2. annotate 函数的用法
  3. PDF Expert for Mac 2.5.5 中文版 — PDF编辑工具
  4. WINDOWS系统文件夹、实用自带工具、DOS、进程等,解析集合(积累)较实用...
  5. cloudstack上传模板时候的一个报错
  6. 外显子分析思路总结(Exome Sequencing Analysis review)
  7. 让Win7系统下的硬盘不在狂闪的诀窍
  8. 界门纲目科属种的英文——学生物的基础
  9. iOS超级签名系统源码及分析
  10. 那些不回你微信的人都在看什么?