原文连接:https://mp.weixin.qq.com/s/g6RzzJIOpyBLiCq-YHBBMg

崩溃日志:

1 java.lang.RuntimeException:Unable to start activity ComponentInfo{com.pxwx.assistant/com.pxwx.main.ui.MainActivity}: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation
2 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)
3 ......
4 Caused by:
5 java.lang.IllegalStateException:Only fullscreen opaque activities can request orientation
6 android.app.Activity.onCreate(Activity.java:1038)
7 androidx.core.app.ComponentActivity.onCreate(Unknown Source:0)
8 androidx.activity.ComponentActivity.onCreate(Unknown Source:0)
9 androidx.fragment.app.FragmentActivity.onCreate(Unknown Source:99)
10 androidx.appcompat.app.AppCompatActivity.onCreate(Unknown Source:10)
11 com.pxwx.base.activity.BaseActivity.onCreate(Unknown Source:0)
12 com.pxwx.main.ui.MainActivity.onCreate(Native Method)
13 android.app.Activity.performCreate(Activity.java:7183)
14 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1221)
15 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2910)
16 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3032)
17 android.app.ActivityThread.-wrap11(Unknown Source:0)
18 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1696)
19 android.os.Handler.dispatchMessage(Handler.java:105)
20 android.os.Looper.loop(Looper.java:164)
21 android.app.ActivityThread.main(ActivityThread.java:6942)
22 java.lang.reflect.Method.invoke(Native Method)
23 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
24 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

抛出异常信息:

Only fullscreen opaque activities can request orientation

Android8.0源码Activity.java:

https://www.androidos.net.cn/android/8.0.0_r4/xref/frameworks/base/core/java/android/app/Activity.java


protected void onCreate(@Nullable Bundle savedInstanceState) {if (DEBUG_LIFECYCLE) Slog.v(TAG, "onCreate " + this + ": " + savedInstanceState);if (getApplicationInfo().targetSdkVersion > O && mActivityInfo.isFixedOrientation()) {final TypedArray ta = obtainStyledAttributes(com.android.internal.R.styleable.Window);final boolean isTranslucentOrFloating = ActivityInfo.isTranslucentOrFloating(ta);ta.recycle();//如果Activity方向固定并且是透明(或者浮动),则会抛异常。if (isTranslucentOrFloating) {throw new IllegalStateException("Only fullscreen opaque activities can request orientation");}}...}

查看ActivityInfo.java的isTranslucentOrFloating()方法:
https://www.androidos.net.cn/android/8.0.0_r4/xref/frameworks/base/core/java/android/content/pm/ActivityInfo.java

//检查Activity方式是否是透明或者是浮动的
public static boolean isTranslucentOrFloating(TypedArray attributes) {final boolean isTranslucent =attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsTranslucent,false);final boolean isSwipeToDismiss = !attributes.hasValue(com.android.internal.R.styleable.Window_windowIsTranslucent)&& attributes.getBoolean(com.android.internal.R.styleable.Window_windowSwipeToDismiss, false);final boolean isFloating =attributes.getBoolean(com.android.internal.R.styleable.Window_windowIsFloating,false);return isFloating || isTranslucent || isSwipeToDismiss;}

解决方法:

1、降级targetSDKVersion到26以下(废话!!)

2、移除mainfest文件里的screenOrientation属性

3、取消Activity主题里的windowIsTranslucent属性或者windowSwipeToDismiss属性或者windowIsFloating属性(根据你设置了什么属性来具体分析)

4、移除manifest文件里的screenOrientation属性,并在Activity的onCreate方法里设置屏幕方向

if (Build.VERSION.SDK_INT != Build.VERSION_CODES.O) {setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

关注我的技术公众号

Android兼容性优化-Android 8.0设置Activity透明主题崩溃相关推荐

  1. Android设置Activity透明背景样式

    给Activity指定主题样式时,如果activity继承AppCompatActivity,则必须指定theme为Theme.AppCompat或者其子类,否则会报错. 首先,不设置布局文件背景颜色 ...

  2. 【android】把AlertDialog后面黑背景设置全透明,昏暗度为0

      核心代码:        dialog.getWindow().setDimAmount(0);//设置昏暗度为0 public void showDialog(){AlertDialog dia ...

  3. android activity透明主题,Android应用的全透明效果--Activity及Dialog的全透明

    1.Activity全透明 同学给了这个有趣的代码,现在公布出来. 先在res/values下建colors.xml文件,写入:<?xmlversion ="1.0"enco ...

  4. Android24 怎么添加整体布局背景,更新安卓10可用设置valerie透明主题美化详细教程(2020.2.24)...

    本帖最后由 神兽叫馒头 于 2020-2-24 13:16 编辑 最近很多加油问我如何设置的背景,我就不一一回复了,给大家一个详细教程,对你有帮助请回复顶贴其实以前已经有人发过类似的贴子了,只是不太详 ...

  5. Android 设置Activity透明

    一直在应用程序中使用的Activity都是黑色不透明的背景,很少遇到那些花哨的Activity,但是花哨归花哨,有些Activity一定要实现半透或者全透效果,比如我的一张动态壁纸的设置界面,这张设置 ...

  6. android 设置窗口透明效果,android - 如何将对话框窗口背景设置为透明,而不影响其边距...

    当前,我有以下对话框,我将对其项目执行扩展/折叠动画. 该对话框是通过以下代码创建的import android.support.v7.app.AlertDialog; final AlertDial ...

  7. android功耗优化,Android功耗测试小工具集锦

    {,](cpGs,uQ0电池时间一直是移动无线设备设计中的关键因素.随着移动设备变得越来越小.越来越轻,使用大电池并不是好的选择.分析电池耗电量可以帮助优化这些设备的电池工作时间.功耗,指的是终端各个 ...

  8. Android内存优化—Android的内存管理方式

    内存管理机制 从操作系统的角度来说,内存就是一块数据存储区域,属于可被操作系统调度的资源.现代多任务(进程)的操作系统中,内存管理尤为重要,操作系统需要为每一个进程合理的分配内存资源,所以可以从两方面 ...

  9. android 悬浮窗相关配置以及设置背景透明

    悬浮窗相信都会用到,配合背景透明以及webview-js注入可以做很多事情. 1.判断权限 public static boolean checkFloatPermission(Context con ...

最新文章

  1. bitwarden自建服务器,BitWarden
  2. Nginx中server_name 参数详解
  3. IDEA+Maven+Springboot:invalid bound statement (not found) 解决办法
  4. c#中ref与out的区别
  5. mysql连接卡死,很多线程sleep状态,导致CPU中mysqld占用率极高(问题原因还待考证)...
  6. 2021-07-07
  7. boost::spirit模块实现罗马数字解析器(演示符号表)的测试程序
  8. vant按需引入没样式_传统背景墙早看腻了,不如走一圈石膏线简单好看,8种样式随意选...
  9. 中点击按钮新建widget_iOS 14-Widget开发
  10. cla c 语言编译器,第九章 CLA_C2000_C_Compiler.pdf
  11. LeetCode 1176. 健身计划评估(滑动窗口)
  12. mysql数据库 auto_increment_mysql数据库 auto_increment
  13. Nginx安装负载均衡配置 fair check扩展
  14. 还在用上古的 ls 命令管理文件吗,是时候使用终端文件管理神器 lf 了!
  15. 使用jad反编译Java文件
  16. 两个栈实现一个队列(图解),一看就懂
  17. Python类的继承
  18. 水星路由器登录界面找不到服务器,新版水星(Mercurey)路由器后台登陆界面打不开怎么办?...
  19. 小米3c路由器拆机_路由器也智能,小米路由器3C使用心得 - IT168试客
  20. es sql实现分页

热门文章

  1. 《Cisco QoS认证考试指南(第2版)》——第6章流量限速和整形
  2. 一名优秀的UI设计师不能错过的几本书!
  3. 2021年中国电影行业发展现状分析,未来全面均衡发展的前路任重道远「图」
  4. 阿里公有云与专有云上ADB3.0的功能区别
  5. Flink、Iceberg和Hive的Catalog比较研究
  6. 7年java只会crud,LICENSE · 只会CRUD/javashare - Gitee.com
  7. hypermesh 连接单元_八重洲电台发布网络远程控制系统LAN单元“ SCULAN10”
  8. 单片机学习01_JFlash.exe烧录hex文件操作
  9. 十年IT经典书籍下载
  10. 人生:年薪10w和年薪100w的人,差在哪里?