Android Framework禁用手势上滑及按钮进多任务的功能

安卓手势多任务

安卓手势多任务是指在安卓系统中,通过特定的手势操作来实现多任务管理的功能。
以下是一些常见的安卓手势多任务操作:

  1. 从屏幕底部上滑:这是最常见的安卓手势多任务操作之一。在大多数安卓手机上,从屏幕底部向上滑动一段距离,然后停留片刻,即可进入多任务视图。在多任务视图中,可以看到最近使用的应用程序的卡片,通过左右滑动可以切换应用程序,向上滑动可以关闭应用程序。
  2. 从屏幕底部上滑并停顿:在一些安卓手机上,从屏幕底部向上滑动一段距离后停顿片刻,可以直接进入多任务视图,而无需停留。
  3. 从屏幕两侧向内滑动:在一些安卓手机上,从屏幕两侧向内滑动一段距离,然后停留片刻,也可以进入多任务视图。
  4. 双击屏幕:在一些安卓手机上,双击屏幕可以唤醒屏幕或进入多任务视图。具体的操作方式可能因手机品牌和型号而异。
  5. 按手势导航按钮
    不同的安卓手机可能会有不同的手势多任务操作方式,具体的操作方式可以参考手机的用户手册或在设置中查找相关的手势设置。
    在这里插入图片描述

需求

禁用上滑进多任务的功能, 上滑不再显示多任务界面.

分析

  1. 要禁用手势导航按键的多任务要改SystemUI
  2. 要禁用上滑多任务要改Launcher

实现

禁用上滑进多任务的功能

packages/apps/Launcher3/quickstep/src/com/android/quickstep/TaskAnimationManager.java
注释掉里面的startRecentsActivity处的代码.

  diff --git a/packages/apps/Launcher3/quickstep/src/com/android/quickstep/TaskAnimationManager.java b/packages/apps/Launcher3/quickstep/src/com/android/quickstep/TaskAnimationManager.java
index cad51f4cc6..7cf3463b36 100644
--- a/packages/apps/Launcher3/quickstep/src/com/android/quickstep/TaskAnimationManager.java
+++ b/packages/apps/Launcher3/quickstep/src/com/android/quickstep/TaskAnimationManager.java
@@ -45,6 +45,7 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
      */
     public void preloadRecentsAnimation(Intent intent) {
         // Pass null animation handler to indicate this start is for preloading
+        Log.d("Ani", "preloadRecentsAnimation");
         UI_HELPER_EXECUTOR.execute(() -> ActivityManagerWrapper.getInstance()
                 .startRecentsActivity(intent, null, null, null, null));
     }
@@ -118,8 +119,11 @@ public class TaskAnimationManager implements RecentsAnimationCallbacks.RecentsAn
         });
         mCallbacks.addListener(gestureState);
         mCallbacks.addListener(listener);
+        Log.d("Ani", "startRecentsAnimation");
+        /*
         UI_HELPER_EXECUTOR.execute(() -> ActivityManagerWrapper.getInstance()
                 .startRecentsActivity(intent, null, mCallbacks, null, null));
+        */
         gestureState.setState(STATE_RECENTS_ANIMATION_INITIALIZED);
         return mCallbacks;
     }

在安卓13上实测通过.

禁用手势导航多任务按键

frameworks/base/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java

    @Override
    public void toggleRecentApps() {
        // 注释掉toggleRecentApps函数中的所有代码, 就可禁用
        /*
        // If connected to launcher service, let it handle the toggle logic
        IOverviewProxy overviewProxy = mOverviewProxyService.getProxy();
        if (overviewProxy != null) {
            final Runnable toggleRecents = () -> {
                try {
                    if (mOverviewProxyService.getProxy() != null) {
                        mOverviewProxyService.getProxy().onOverviewToggle();
                        mOverviewProxyService.notifyToggleRecentApps();
                    }   
                } catch (RemoteException e) {
                    Log.e(TAG, "Cannot send toggle recents through proxy service.", e); 
                }   
            };  
            // Preload only if device for current user is unlocked
            if (mStatusBarLazy != null && mStatusBarLazy.get().isKeyguardShowing()) {
                mStatusBarLazy.get().executeRunnableDismissingKeyguard(() -> {
                        // Flush trustmanager before checking device locked per user
                        mTrustManager.reportKeyguardShowingChanged();
                        mHandler.post(toggleRecents);
                    }, null,  true , false ,
                    true);
            } else {
                toggleRecents.run();
            }   
            return;
        } else {
            // Do nothing
        }   
        */
    }   

上面只是禁用上滑进多任务的功能,及不显示最下方的NavigationBar横条, 上层应用如果要自己使用底部上滑功能,需要传参数告之systemui, 与launcher不要拦截上滑事件。
在设置setContentView(mView);前调用以下代码

        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

作者:帅得不敢出门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅得不敢出门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值