Android8.0 Only fullscreen activities can request orientation
发生的原因
android8.0 要求只有全屏的activity才可以设置方向
void setRequestedOrientation(int requestedOrientation) {
if (ActivityInfo.isFixedOrientation(requestedOrientation)
&& !fullscreen
&& appInfo.targetSdkVersion >= O) {
throw new IllegalStateException("Only fullscreen activities can request orientation");
}
}
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;
}
全屏的条件(不能满足以下任意一条)
- “windowIsTranslucent”为true;
- “windowIsTranslucent”为false,但“windowSwipeToDismiss”为true;
- “windowIsFloating“为true;
解决的办法
在manifest.xml文件中,修改对应的activity
-
删除属性android:screenOrientation
或者 -
设置成全屏
满足一个条件即可。