SystemUI禁止长按Home键弹出历史应用

SystemUI中长按home键,可以最近应用程序调出最近应用程序。

公司需求需要在安全模式下屏蔽长按home键,android模式下不屏蔽。长按home键在PhoneWindowManager.java中处理的。因此查看代码如下:

 

package com.android.internal.policy.impl;
public class  PhoneWindowManager implementsWindowManagerPolicy {
 
static final int LONG_PRESS_HOME_RECENT_SYSTEM_UI = 1;
private void handleLongPressOnHome() {
       if (mLongPressOnHomeBehavior != LONG_PRESS_HOME_NOTHING) {
           mHomeConsumed = true;
           performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS,false);
 
           if (mLongPressOnHomeBehavior == <span style="color:#ff0000;">LONG_PRESS_HOME_RECENT_SYSTEM_UI</span>){
                toggleRecentApps();
           } else if (mLongPressOnHomeBehavior == LONG_PRESS_HOME_ASSIST) {
                launchAssistAction();
           }
       }
}
 private void toggleRecentApps() {
       mPreloadedRecentApps = false; // preloading no longer needs to becanceled
       sendCloseSystemWindows(SYSTEM_DIALOG_REASON_RECENT_APPS);
       try {
           IStatusBarService statusbar = getStatusBarService();
           if (statusbar != null) {
                <span style="color:#cc0000;">statusbar.toggleRecentApps();//可以在此处修改</span>
           }
       } catch (RemoteException e) {
           Slog.e(TAG, "RemoteException when showing recent apps", e);
           // re-acquire status bar service next time it is needed.
           mStatusBarService = null;
       }
    }
…..
}

在类中通过查看变量LONG_PRESS_HOME_RECENT_SYSTEM_UI,可以搜索得到与之有关的有:toggleRecentApps()、preloadRecentApps()


如上可以在PhoneWindowManager中修改,也可以在systemui中修改,因为可以直接编译,便于调试,所以我是在systemui中处理的,

package com.android.systemui.statusbar;
public abstract class BaseStatusBar extendsSystemUI implements
       CommandQueue.Callbacks {
@Override
   public void toggleRecentApps() {
       int msg = MSG_TOGGLE_RECENTS_PANEL;
       mHandler.removeMessages(msg);
       mHandler.sendEmptyMessage(msg);
    }
 
   @Override
   public void preloadRecentApps() {
       int msg = MSG_PRELOAD_RECENT_APPS;
       mHandler.removeMessages(msg);
       mHandler.sendEmptyMessage(msg);
    }
……………..
}

修改为如下:

@Override
   public void toggleRecentApps() {
             if(android模式){
                       int msg =MSG_TOGGLE_RECENTS_PANEL;
                 mHandler.removeMessages(msg);
                 mHandler.sendEmptyMessage(msg);
             }
    }
 
   @Override
   public void preloadRecentApps() {
             if(android模式){
                       int msg =MSG_PRELOAD_RECENT_APPS;
           mHandler.removeMessages(msg);
           mHandler.sendEmptyMessage(msg);
             }
    }
 


 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值