1. 非锁屏
在packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
修改panelEnabled()方法
//返回false禁用,返回true启用,修改为false即可
@Override
public boolean panelEnabled() {
return false;
//return mCommandQueue.panelsEnabled();
}
但这个方法不能禁止锁屏状态下下拉状态栏。
2. 锁屏
在base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
修改handleQsDown(MotionEvent event)方法:
private void handleQsDown(MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN
&& shouldQuickSettingsIntercept(event.getX(), event.getY(), -1)) {
if(想要启动禁止锁屏){
return;
}
}
在该方法前面就return就可以禁止锁屏界面下拉状态栏
3. 特殊情况
如果发出禁止指令的时候设备状态栏正处于下拉状态,那么应该先让状态栏收起来。
这里也分锁屏/非锁屏
3.1 非锁屏
在适当的位置调用StatusBar的animateCollapseQuickSettings()方法,这是关闭qs。
与之对应的还有StatusBar的animateExpandNotificationsPanel()方法,展开通知画板。
3.2 锁屏
在适当位置添加NotificationPanelView的closeQs()方法