“Only fullscreen opaque activities can request orientation”

原由:

如把targetsdkversion调成26以上,并且Activity主题设为透明,而又指定了activity屏幕的方向的话,在Android8.0的手机上会直接抛出RunRuntimeException异常,并且打印的错误信息里面会有这段话:"Only fullscreen opaque activities can request orientation "

安卓8.0版本时为了支持全面屏,增加了一个限制:如果是透明的Activity,则不能固定它的方向,因为它的方向其实是依赖其父Activity的(因为透明)。然而这个bug只有在8.0中有,8.1中已经修复。

具体crash有两种:

1、如果Activity的主题为透明,在manifest文件中指定了一个方向,则在onCreate中crash

2、如果Activity的主题为透明,调用setRequestedOrientation方法,则crash

解决:

方案1、targetsdkversion降低到26及以下

方案2、对项目中的activity做一次筛查,避免指定透明主题的activity同时又指定了方向

你可能感兴趣的:(“Only fullscreen opaque activities can request orientation”)