Only fullscreen activities can r

2019-05-09  本文已影响0人  简单1典

今天遇到一个非常奇葩的问题,AS里面血红色的Log~

Only fullscreen activities can request orientation?

翻阅资料之后发现,原来是google的大神们为了赶工8.0,rom里面遗留的Bug。

解决方案如下:

1.去掉透明activity里面设置方向的所有静态的和动态的配置。

2.在BaseActivity里面编写如下2个方法:

private boolean isTranslucentOrFloating(){

        boolean isTranslucentOrFloating = false;

        try {

            int [] styleableRes = (int[]) Class.forName("com.android.internal.R$styleable").getField("Window").get(null);

            final TypedArray ta = obtainStyledAttributes(styleableRes);

            Method m = ActivityInfo.class.getMethod("isTranslucentOrFloating", TypedArray.class);

            m.setAccessible(true);

            isTranslucentOrFloating = (boolean)m.invoke(null, ta);

            m.setAccessible(false);

        } catch (Exception e) {

            e.printStackTrace();

        }

        return isTranslucentOrFloating;

}

@Override

    public void setRequestedOrientation(int requestedOrientation) {

        if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O && isTranslucentOrFloating()) {

            return;

        }

        super.setRequestedOrientation(requestedOrientation);

    }

收工!!!

原因追溯参考文章  

https://zhuanlan.zhihu.com/p/32190223

上一篇下一篇

猜你喜欢

热点阅读