• Android11 桌面默认横屏导致任务键近期任务布局UI显示错误!


    /frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

    定义变量:private boolean stch = false;

    keyCode == KeyEvent.KEYCODE_APP_SWITCH

    取消原来逻辑,采用广播打开近期任务后台

    /*/
                if (!keyguardOn) {
                    if (down && repeatCount == 0) {
                        preloadRecentApps();
                    } else if (!down) {
                        toggleRecentApps();
                    }
                }
                //*/

    新增代码如下:

    1. //*/
    2. if (down) {
    3.                             stch = !stch;
    4.                             if (stch) {
    5.                                 Intent intent = new Intent();
    6.                                 intent.setClassName("com.android.launcher3","com.android.quickstep.RecentsActivity");
    7.                                 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
    8.                                 Log.d("TYD","---------RecentsActivity-------------"+intent);
    9.                                 mContext.startActivity(intent);
    10.                                 stch = true;
    11.                             } else {
    12.                               //mGotoBack();
    13.                               if("com.android.launcher3.uioverrides.QuickstepLauncher".equals(getCurrentActivityName()) ) {
    14.                                 Intent intent2 = new Intent();
    15.                                 intent2.setClassName("com.android.launcher3","com.android.quickstep.RecentsActivity");
    16.                                 intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
    17.                                 Log.d("TYD","---------RecentsActivity222-------------"+intent2);
    18.                                 mContext.startActivity(intent2);
    19.                                 stch = true;
    20.                                 Log.d("TYD","---------else stch:-------------"+stch);
    21.                               } else {
    22.                                   mGotoEnter();
    23.                                   mGotoEnter2();
    24.                                   Log.d("TYD","---------mGotoEnter-------------"+stch);
    25.                               }
    26.                             }
    27.               }
    28.  //*/

    引用模拟按键方法:

    广播open两次+打开应用需确认两次。目前验证暂无其他bug。

    //*/update recents app layout +QuickstepLauncher
        private void mGotoBack(){
              new Thread() {
                public void run() {
                    try {
                        Instrumentation inst = new Instrumentation();
                        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_BACK);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
             }.start();
        }
        private void mGotoEnter(){
              new Thread() {
                public void run() {
                    try {
                        Instrumentation inst = new Instrumentation();
                        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);//KEYCODE_DPAD_CENTER //KEYCODE_ENTER
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
             }.start();
        }
        private void mGotoEnter2(){
              new Thread() {
                public void run() {
                    try {
                        Instrumentation inst = new Instrumentation();
                        inst.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);//KEYCODE_DPAD_CENTER //KEYCODE_ENTER
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
             }.start();
        }
        //*/

    注意,需在home键和back返回键等虚拟按键做标志位:按下的时候走

    stch = false;

    否则 会出现不可描述的问题

     至于为什么会出现UI界面错误,旋转屏幕而已,我也想问十万个为什么?离离原上谱

  • 相关阅读:
    ffmpeg 开发第一例
    iOS开发之弹窗管理
    Java_断点调试/类变量/类方法/main语法
    【时间序列】流式多变量异常检测数据集NAB详细介绍
    基于springboot+vue水务报修处理系统
    Springboot毕业设计毕设作品,校园教务排课系统 开题报告
    【11.23+11.24】Codeforces 刷题
    如何提高文章质量,不被发文助手“推荐受影响”
    Qt QSS QSlider样式
    wpf-窗口设计-常用小技巧
  • 原文地址:https://blog.csdn.net/qq_46687516/article/details/134447225