美文网首页
修复Android8.0系统BUG导致透明度+转向崩溃

修复Android8.0系统BUG导致透明度+转向崩溃

作者: 清明捉鬼 | 来源:发表于2023-01-19 14:45 被阅读0次
    @Override
    public void onCreate(Bundle savedInstanceState) {
        fixOnlyFullscreen();
        super.onCreate(savedInstanceState);
    }
    /**
     * 修复透明+转向的Android8.0系统 BUG
     */
    private void fixOnlyFullscreen(){
        if (Build.VERSION.SDK_INT == 26 && isTranslucentOrFloating()) {
            fixOrientation(this);
        }
    }

    /**
     *  hook反射方向检查
     **/
    private static void fixOrientation(Activity activity) {
        try {
            Class activityClass = Activity.class;
            Field mActivityInfoField = activityClass.getDeclaredField("mActivityInfo");
            mActivityInfoField.setAccessible(true);
            ActivityInfo activityInfo = (ActivityInfo) mActivityInfoField.get(activity);
            //设置屏幕不固定
            activityInfo.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
        } catch (Exception e) {
        }
    }

    /**
     * hook反射检查是否透明色或者悬浮
     **/
    private boolean isTranslucentOrFloating() {
        boolean isTranslucentOrFloating = false;
        try {
            int[] styleableRes = (int[]) Class.forName("com.android.internal.R$styleable").getField("Window").get(null);
            final TypedArray typedArray = obtainStyledAttributes(styleableRes);
            Method method = ActivityInfo.class.getMethod("isTranslucentOrFloating", TypedArray.class);
            method.setAccessible(true);
            isTranslucentOrFloating = (boolean) method.invoke(null, typedArray);
            method.setAccessible(false);
        } catch (Exception e) {
        }
        return isTranslucentOrFloating;
    }

代码引用自 https://blog.csdn.net/badme/article/details/126599589

相关文章

  • 弹弹play安卓版更新日志

    弹弹play安卓版更新日志 2.3.9 (2017-08-12)修复几处可能导致崩溃的bug 2.3.8 (201...

  • 6岁产品汪 告诉你有些bug为啥“改”不了

    与产品如影随形的是bug,与产品相依为伴的也是bug,bug无处不在,修复一个bug,冒出无数bug,产品崩溃了,...

  • 更新

    @127@#修复会员系统,修复语音商城bug,修复盗音关不了语音bug#¥http://t.cn/RYS7DZE¥

  • 项目常见崩溃6(陆续更新)

    很多崩溃都是源于低版本的系统, 可能这是系统的bug, 但作为开发人员, 即便是系统的bug, 我们也应该找到崩溃...

  • 2019-10-30

    {"id":31,"info":"修复京东价格过滤导致无法缓存bug。","isDelete":1,"isForc...

  • 1.54版本已上线

    1.54版本有一下改进 1. 修复了无法使用系统发音的bug 2. 修复了一些音频文件无法导入的bug 3. 修复...

  • 汇总:记录线上崩溃的问题

    前言 记录线上崩溃问题,持续记录... DigitsKeyListener导致7.x.x以下手机崩溃 修复方式: ...

  • 如何编写可升级合约

    以太坊智能合约部署到链上就无法在修改,这样就导致链上合约bug无法修复只能修复bug后重新部署一份合约,替换原来的...

  • Mac迅雷、你不能崩溃

    不知道是系统的原因还是Mac迅雷自身bug,下载途中很容易崩溃退出,导致下载中断,当你需要彻夜下载大型文件的时候,...

  • iOS 好用的第三方SDK

    BugTags: 移动时代Bug管理系统 移动应用Bug管理移动应用崩溃管理移动应用用户反馈管理网站应用Bug管理...

网友评论

      本文标题:修复Android8.0系统BUG导致透明度+转向崩溃

      本文链接:https://www.haomeiwen.com/subject/uyyefdtx.html