原文连接:https://mp.weixin.qq.com/s/g6...

崩溃日志:

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 orientation2 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2957)3 ......4 Caused by:5 java.lang.IllegalStateException:Only fullscreen opaque activities can request orientation6 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/...

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

//检查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);}

关注我的技术公众号

更多相关文章

  1. Android(安卓)Dialog风格弹出框的Activity
  2. Android实用代码
  3. android nfc 开发
  4. 49.Android中各种Span的用法
  5. android 属性动画
  6. RelativeLayout常用属性介绍
  7. android在service中使用AsyncHttpClient加载网络资源
  8. Android(安卓)edittext刚进入页面取消焦点
  9. Android(安卓)lint 检查提示汇总

随机推荐

  1. android API文档下载地址
  2. android studio 3.0配置自定义打包名称
  3. [Java][Android][Process] ProcessBuilde
  4. Android学习笔记(四十):Preference的使用
  5. [置顶] android textview 首行缩进 多行
  6. Android x86用来做模拟器调试
  7. 【Android应用开发】-(19)Android(安卓)串
  8. Android 学习笔记3(Activity之间参数传递)
  9. PermissionsDispatcher库的使用(简单处理A
  10. Uiautomator Api浅析