原文: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,那么就不会出现问题啦

参考

Android 8.0 Only fullscreen activities can request orientation解决方法的更多相关文章

  1. Only fullscreen activities can request orientation

    问题 当我们把targetSdkVersion升级到27,buildToolsVersion和相关的support library升级到27.0.2后,在Android 8.0(API level 2 ...

  2. Android 6.0 SDK 找不到HttpClient的解决方法

    一.情况描述 在eclipse或Android Studio开发时(笔者目前只用过Android Studio),设置Android SDK的编译版本为23时,且使用了httpClient相关类的库项 ...

  3. Android 6.0删除Apache HttpClient相关类的解决方法

    相应的官方文档如下: 上面文档的大致意思是,在Android 6.0(API 23)中,Google已经移除了Apache HttpClient相关的类,推荐使用HttpUrlConnection. ...

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

  5. Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)

    Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程) 看到网上AS3.0新增加的查看手机文件的新功能,全部都是转载的,没有几个人心细的把如何打开 ...

  6. Android开发调试无法连接到夜神模拟器的解决方法

    Android开发调试无法连接到夜神模拟器的解决方法: 一般原因是adb的版本不一致造成的!!!!!换成一样的就可以了. 在网上看到的方法,特记录下来: 1.任务管理器里看下,adb.exe以及nox ...

  7. 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法

    错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...

  8. 启动android程序和虚拟机时候出现如下错误的解决方法

    启动android程序和虚拟机时候出现如下错误的解决方法. 错误重现: [2011-07-13 16:22:48 - Emulator] invalid command-line parameter: ...

  9. IIS6.0 IIS7.5应用程序池自动停止的解决方法 搜集整理

    来源:http://www.guchengnet.com/1499.html IIS6.0 IIS7.5应用程序池自动停止的解决方法 搜集整理 发表于2016年12月14日 有2.3个月没有用本地的i ...

  10. localhost不能访问127.0.0.1可以访问的原因及解决方法 被打磨的不像人样

    localhost不能访问127.0.0.1可以访问的原因及解决方法 作者:admin    时间:2013-12-16 10:58:47    浏览:16599   有时候我们在调试程序的时候,会出 ...

随机推荐

  1. 深入浅出Java多线程(六):Java内存模型

    引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第六篇内容:Java内存模型.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在并发编程中,有两个关键问题至关 ...

  2. pandas教程02: 查找表中数据

      在上篇教程中,我们介绍了pandas的安装.数据的导入与导出以及删除行列的操作.这次让我们一起研究下在pandas中如何根据指定的条件查找表中数据. 1. 数据准备   这次,我们使用一张学生成绩 ...

  3. CH57x/CH58x/CH59x主从机主动发起断连

    如果在做应用的时需要同时使用使用两块板子分别做主从机或者使用一块板子做单独的从机: 这是我们需要按下某个按键或者发送某条指令主机或者从机主动断开与对方的连接且设备不需要复位: 主机端我们可以调用这样一 ...

  4. 2023年多校联训NOIP层测试6

    2023年多校联训NOIP层测试6 打了 \(10min\) 骗分,就溜了. T1 弹珠游戏 \(0pts\) 没听懂讲评,暂时咕了. T2 晚会 \(20pts\) 部分分( \(20pts\) ) ...

  5. google recaptcha 谷歌人机身份验证超详细使用教程,前端/后端集成说明

    壹 ❀ 引 在日常页面交互中,验证码使用是极为频繁的,登录注册验证,非机器人操作验证等等,它遍布于每一个网站.说到验证码实现,Goole Recaptcha是一个非常不错的选择,那么希望通过本文的使用 ...

  6. CF1833F Ira and Flamenco

    题目链接 题解 知识点:组合数学,枚举,双指针. 注意到,长度为 \(m\) 且数字各不相同的子序列,那么最大值与最小值的差至少为 \(m-1\) .因此,对于任意子序列,它是合法的,当且仅当,将其从 ...

  7. Ubuntu下SSH管理及SFTP下载工具Muon(Snowflake)

    简介 Muon其实更像是一个基于ssh的服务器管理工具, 界面中有PAC Manager的影子, 集成了文件管理, ssh命令行, 服务器性能监测和工具包等功能. 因为这个工具的编写语言是Java, ...

  8. Java8函数式接口Predicate实战

    关于函数式接口 函数式接口 Funcational Interface 是指接口范围内只允许有一个抽象方法(不包括default和static方法)的接口.Java中有一些预定义的函数接口,如Pred ...

  9. 大白菜方式制作win10 PE启动U盘

    说明 最近帮朋友安装下win10,用了2种制作U盘启动盘的方式.记录一下也方便大家少走弯路. 准备的工具: 1.大白菜软件 2.win10镜像 3.1个U盘,U盘容量 > 8G即可. 制作PE启 ...

  10. spring boot实现验证码登录

    内容比较简单,需要完整项目的朋友留下邮箱,给你们发. 直接看效果: 下面是实现步骤 1.验证码生成工具类(引用自网络) package com.laoxu.test.helloweb.util; im ...