Only fullscreen activities can request orientation异常解决
最近由于要接入一个三方的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异常解决相关推荐
- Android Only fullscreen opaque activities can request orientation
原因 错误是由全屏透明 Activity 引起的 Caused by: java.lang.IllegalStateException: Only fullscreen opaque activiti ...
- Android之Only fullscreen opaque activities can request orientation
1 问题 使用透明的activity主题,并且固定了方向,在Android8.0手机上提示错误如下 Only fullscreen opaque activities can request orie ...
- 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 ...
- 分享qq报错Only fullscreen opaque activities can request orientation
这两天突然发现了一个项目中分享链接到qq时崩溃但分享到微信却啥事没有的问题,然后连上usb,查看error发现报了这样一个错:Only fullscreen opaque activities can ...
- Only fullscreen opaque activities can request orientation
这个问题是在android8.0以上的手机测试出来的 自己的处理方法 把配置文件中 android:screenOrientation="portrait" 删除即可.
- 实测解决:SpringBoot 中 Invalid character found in the request target 异常
实测解决:SpringBoot 中 Invalid character found in the request target 异常 原因: SpringBoot 2.0.0 以上都采用内置tom ...
- orcal 数据库 maven架构 ssh框架 的全xml环境模版 及常见异常解决
创建maven项目后,毫不犹豫,超简单傻瓜式搞定dependencies(pom.xml 就是maven的依赖管理),这样你就有了所有你要的包 <project xmlns="http ...
- 基于 Kubernetes 的 Jenkins 主从通信异常解决
基于 Kubernetes 的 Jenkins 主从通信异常解决 问题描述 基于 Kubernetes 部署 Jenkins 动态 slave 后,运行 Jenkins Job 会抛java.nio. ...
最新文章
- 计算机和路由器连接后IP地址受限制或无连接情况的处理
- linux 管理 服务,Linux服务管理 详述
- container and Injection
- object对象进行深拷贝
- 第4节 常见软件安装-Mysql和SQLyog
- 如何下载matlab,如何下载MATLAB?
- 联想微型计算机扬天M4000e,联想扬天M4000e-00评测:傲腾内存加持下的商务整机
- 推荐一款免费开源的pdf编辑器
- vue开发环境搭建(WebStorm)
- python 存根_python - 内联类型注释与存根会导致不同的mypy行为 - SO中文参考 - www.soinside.com...
- 元气骑士如何获得机器人成就皮肤_《元气骑士》听过浮游炮大礼包吗?有利于快速获取机器人的皮肤!...
- printvertically Java_Print Words Vertically in JavaScript
- python获取游戏窗口_python中pygame针对游戏窗口的显示方法实例分析(附源码)
- 定解问题(一)| 通解与特解 + 适定性 | 偏微分方程(五)
- 阿里云ACP认证(SLB专项)
- zeppelin 连接 spark报错
- java编写一个学生类和教师类,Java创建一个学生类
- 3种有效的小米手机数据恢复方法
- Flutter 3 发布了(文末推荐一个免费的在线Flutter学习教程)
- Java基础(08) 面向对象
热门文章
- 中职教计算机专业发展,中等职业教育中计算机专业教育思考
- annotate 函数的用法
- PDF Expert for Mac 2.5.5 中文版 — PDF编辑工具
- WINDOWS系统文件夹、实用自带工具、DOS、进程等,解析集合(积累)较实用...
- cloudstack上传模板时候的一个报错
- 外显子分析思路总结(Exome Sequencing Analysis review)
- 让Win7系统下的硬盘不在狂闪的诀窍
- 界门纲目科属种的英文——学生物的基础
- iOS超级签名系统源码及分析
- 那些不回你微信的人都在看什么?