Android 8.0 Only fullscreen activities can request orientation解决方法
原文:Android 8.0 Only fullscreen activities can request orientation解决方法 | Stars-One的杂货小窝
公司的项目坑太多,现在适配高版本的出现了上面的这个问题..
个人项目中我一般不对这个Activity朝向orientation属性进行更改
出现这个问题的原因是Android8.0的限制,只有全屏(fullscreen)的Activity才能去设置横/竖屏的方向,所以解决方法从下面几个方向入手
分析
从版本入手,降低版本,低版本没有这个限制
从Activity方向入手,取消设置横/竖屏(也就是AndroidMainfest中删除Activity的orientation的属性),或者是将Activity设置为全屏的
那么怎么知道Activity是不是属于全屏的,由下面的属性可以判断(定义在style文件里)
1.“windowIsTranslucent”为true;
2.“windowIsTranslucent”为false,但“windowSwipeToDismiss”为true;
3.“windowIsFloating“为true;
符合上面的某点规则的,说明Activity不是fullScreen
我们按照上面的规则,在styles.xml文件中定义好主题,之后给Activity设置即可
上面说的,可能项目的Activity过多,不好更改,还可以使用代码的方式,将Activity的orientation属性还原为默认值SCREEN_ORIENTATION_UNSPECIFIED(通过反射)
还有一点可以考虑,就是让非全屏的Activity的orientation属性设置behind,让它跟随上个Activity保持相同的屏幕方向即可
基于以上的分析,总结得出下面几种解决方法
解决方法
修改targetSdk版本
将build.gradle里的targetSdk修改为26以下(包含26)

设置Activity为全屏
通过定义style.xml属性,将Activity设置为全屏即可
1.“windowIsTranslucent”为true;
2.“windowIsTranslucent”为false,但“windowSwipeToDismiss”为true;
3.“windowIsFloating“为true;
符合上面的某点规则的,说明Activity不是fullScreen,按照上面的定义,反向设置即可,如
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="windowIsTranslucent">false</item>
<item name="windowSwipeToDismiss">false</item>
</style>
然后在AndroidManiFest.xml文件中,给Activity设置style属性,如
<activity
android:name="com.tjsoft.advice.ui.More"
android:screenOrientation="landscape"
android:theme="@style/AppTheme" />
通过反射重置orientation
具体参考Only fullscreen activities can request orientation终极解决方法_LiteHeaven的专栏-CSDN博客,本人未测试过
设置orientation为behind
这种方法是将非fullscreen的Activity的orientation设置为behind,让其屏幕方向和上个Activity相同,这样就不会出现问题了
删除Activity设置的orientation属性
这个是终极大法,就是不给Activity设置orientation,那么就不会出现问题啦
参考
- Only fullscreen activities can request orientation?一个搞笑的坑! - 知乎
- Only fullscreen activities can request orientation终极解决方法_LiteHeaven的专栏-CSDN博客
Android 8.0 Only fullscreen activities can request orientation解决方法的更多相关文章
- Only fullscreen activities can request orientation
问题 当我们把targetSdkVersion升级到27,buildToolsVersion和相关的support library升级到27.0.2后,在Android 8.0(API level 2 ...
- Android 6.0 SDK 找不到HttpClient的解决方法
一.情况描述 在eclipse或Android Studio开发时(笔者目前只用过Android Studio),设置Android SDK的编译版本为23时,且使用了httpClient相关类的库项 ...
- Android 6.0删除Apache HttpClient相关类的解决方法
相应的官方文档如下: 上面文档的大致意思是,在Android 6.0(API 23)中,Google已经移除了Apache HttpClient相关的类,推荐使用HttpUrlConnection. ...
- Android Api 27 在 Android 8.0 上出现 Only fullscreen opaque activities can request orientation 的解决情况
刚上班,没有业务开发,对 App 的 Api 由 26 升级到了 27, 结果在 Android 8.0 的设备上会出现 crash . Log 如下: java java.lang.IllegalS ...
- Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)
Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程) 看到网上AS3.0新增加的查看手机文件的新功能,全部都是转载的,没有几个人心细的把如何打开 ...
- Android开发调试无法连接到夜神模拟器的解决方法
Android开发调试无法连接到夜神模拟器的解决方法: 一般原因是adb的版本不一致造成的!!!!!换成一样的就可以了. 在网上看到的方法,特记录下来: 1.任务管理器里看下,adb.exe以及nox ...
- 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法
错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...
- 启动android程序和虚拟机时候出现如下错误的解决方法
启动android程序和虚拟机时候出现如下错误的解决方法. 错误重现: [2011-07-13 16:22:48 - Emulator] invalid command-line parameter: ...
- IIS6.0 IIS7.5应用程序池自动停止的解决方法 搜集整理
来源:http://www.guchengnet.com/1499.html IIS6.0 IIS7.5应用程序池自动停止的解决方法 搜集整理 发表于2016年12月14日 有2.3个月没有用本地的i ...
- localhost不能访问127.0.0.1可以访问的原因及解决方法 被打磨的不像人样
localhost不能访问127.0.0.1可以访问的原因及解决方法 作者:admin 时间:2013-12-16 10:58:47 浏览:16599 有时候我们在调试程序的时候,会出 ...
随机推荐
- uniapp面试题
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- 关于React-Router6 (React 路由)
一.概要 (1)每个单页应用其实是一系列的 JS 文件,当用户请求网站时,网站返回一整个(或一系列)的 js 文件和 HTML,而当用户在某个页面内点击时,你需要告诉浏览器怎么加载另一个页面地址.单页 ...
- CH59X/CH58X/CH57X 片上flash的使用
以CH592F为例:在使用时先看手册对code和data区的划分 一.DataFlash的读写的操作 先看几个操作dataflash的API(读擦写): /** * @brief read Data- ...
- Python脚本之将一个文件夹划分多个文件夹和批量创建文件夹
import os import shutil # 要移出的文件路径 path = r"C:\old_dir" # 新创建多个文件夹的路径 new_path = r"C: ...
- 2.3 实验:用linxerUnpack进行通用脱壳--《恶意代码分析实战》
Lab01-03.exe 实验内容: 1.将文件上传到http://www.VirusTotal.com 进行分析并查看报告.文件匹配到了已有的反病毒软件特征吗? 2.是否有这个文件被 ...
- 【CSS】如何复原被隐藏的滚动条?记一个看似简单的样式问题所引发的一系列思考
壹 ❀ 引 故事的起因是这样的,某一个同事在封装了一个TableList组件,用于做表格视图渲染,但出于研发经验考虑上,他可能觉得表格若出滚动条可能会引发某些不可预估的小问题(毕竟一个基础组件会被用于 ...
- JS 判断对象属性是否存在,判断是否包含某个属性,是否为自身属性
壹 ❀ 引 看过博主JS 疫情宅在家,学习不能停,七千字长文助你彻底弄懂原型与原型链这篇文章的同学应该知道,文中有专门介绍这个问题.那么为什么我要另起一篇再说一次呢?原因有两个,一是介绍原型与原型链的 ...
- NC24870 [USACO 2009 Dec G]Video Game Troubles
题目链接 题目 题目描述 Farmer John's cows love their video games! FJ noticed that after playing these games th ...
- 大米新闻微信小程序和Springboot新闻管理系统项目源码
介绍 本项目分为大米news小程序端和springboot新闻管理系统后台项目.小程序主要用来新闻展示,后台管理系统用于提供相关新闻API. 项目源码 参考:https://www.bilibili. ...
- .gitignore 无法工作
在开发一个新项目时,发现每次编译时都会产生一些 .obj 无用的文件,这些文件并不需要 push 到 github 上 故使用 .gitignore 忽略这些文件 首先,我们可以设置这些文件的输出目录 ...