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();

}

}

//*/

新增代码如下:

//*/

if (down) {
                            stch = !stch;
                            if (stch) {
                                Intent intent = new Intent();
                                intent.setClassName("com.android.launcher3","com.android.quickstep.RecentsActivity");
                                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
                                Log.d("TYD","---------RecentsActivity-------------"+intent);
                                mContext.startActivity(intent);
                                stch = true;
                            } else {
                              //mGotoBack();
                              if("com.android.launcher3.uioverrides.QuickstepLauncher".equals(getCurrentActivityName()) ) {
                                Intent intent2 = new Intent();
                                intent2.setClassName("com.android.launcher3","com.android.quickstep.RecentsActivity");
                                intent2.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP );
                                Log.d("TYD","---------RecentsActivity222-------------"+intent2);
                                mContext.startActivity(intent2);
                                stch = true;
                                Log.d("TYD","---------else stch:-------------"+stch);
                              } else {
                                  mGotoEnter();
                                  mGotoEnter2();
                                  Log.d("TYD","---------mGotoEnter-------------"+stch);
                              }
                            }
              }
 //*/

引用模拟按键方法:

广播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界面错误,旋转屏幕而已,我也想问十万个为什么?离离原上谱

相关推荐
lizhou8287 分钟前
win10下使用docker、k8s部署java应用
java·docker·kubernetes
程序员阿鹏1 小时前
ArrayList 与 LinkedList 的区别?
java·开发语言·后端·eclipse·intellij-idea
qq_433716951 小时前
UI自动化测试的边界怎么定义?
自动化测试·软件测试·测试工具·jmeter·ui·接口测试·postman
18你磊哥1 小时前
java重点学习-JVM类加载器+垃圾回收
java·jvm
聂 可 以1 小时前
在SpringBoot项目中利用Redission实现布隆过滤器(布隆过滤器的应用场景、布隆过滤器误判的情况、与位图相关的操作)
java·spring boot·redis
长安初雪1 小时前
Java客户端SpringDataRedis(RedisTemplate使用)
java·redis
aloha_7891 小时前
B站宋红康JAVA基础视频教程(chapter14数据结构与集合源码)
java·数据结构·spring boot·算法·spring cloud·mybatis
尘浮生2 小时前
Java项目实战II基于Java+Spring Boot+MySQL的洗衣店订单管理系统(开发文档+源码+数据库)
java·开发语言·数据库·spring boot·mysql·maven·intellij-idea
前期后期2 小时前
Android OkHttp源码分析(一):为什么OkHttp的请求速度很快?为什么可以高扩展?为什么可以高并发
android·okhttp
猿饵块2 小时前
cmake--get_filename_component
java·前端·c++