问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android systemui禁止下拉怎么做

发布网友 发布时间:2022-04-27 10:28

我来回答

1个回答

热心网友 时间:2023-09-12 20:13

PhoneWindowManager.java里面的修改
[java] view plain copy
--- a/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -2863,7 +2863,9 @@ public class PhoneWindowManager implements WindowManagerPolicy {
@Override
public int adjustSystemUiVisibilityLw(int visibility) {
- mStatusBarController.adjustSystemUiVisibilityLw(mLastSystemUiFlags, visibility);
+ if(Settings.System.getInt(mContext.getContentResolver(),"factorytest.touch.mode",0) == 0){
+ mStatusBarController.adjustSystemUiVisibilityLw(mLastSystemUiFlags, visibility);
+ }
mNavigationBarController.adjustSystemUiVisibilityLw(mLastSystemUiFlags, visibility);
// Reset any bits in mForceClearingStatusBarVisibility that
Acitvity里面使用如下方式:
[java] view plain copy
--- a/huaqin/source/packages/FactoryKitTest/src/com/android/huaqin/factory/TestTouchPanelLine2.java
+++ b/huaqin/source/packages/FactoryKitTest/src/com/android/huaqin/factory/TestTouchPanelLine2.java
@@ -32,6 +32,8 @@ import android.view.WindowManager;
import java.util.ArrayList;
import java.util.List;
+import android.provider.Settings;
+import android.app.StatusBarManager;
public class TestTouchPanelLine2 extends Activity {
private static final String TAG = "TestTouchPanelLine";
@@ -54,6 +56,7 @@ public class TestTouchPanelLine2 extends Activity {
private static final int MSG_TEST_PANEL_NEXT_ITEM = 100;
private static final int MSG_TEST_PANEL_START = 101;
private static final int MSG_TEST_PANEL_STOP = 102;
+ private StatusBarManager mStatusBarManager;
private Handler mInHandler = new Handler() {
@Override
@@ -94,6 +97,12 @@ public class TestTouchPanelLine2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -141,8 +150,22 @@ public class TestTouchPanelLine2 extends Activity {
.obtainMessage(FactoryTestMessage.MSG_OPEN_UI_OK);
msg.arg1 = (int) ID;
mOutHandler.sendMessage(msg);
+ mStatusBarManager = (StatusBarManager) this.getSystemService(Context.STATUS_BAR_SERVICE);
+ int state= StatusBarManager.DISABLE_EXPAND;
+ state |= StatusBarManager.DISABLE_NOTIFICATION_ICONS;
+ state |= StatusBarManager.DISABLE_SYSTEM_INFO;
+ mStatusBarManager.disable(state);
}
+ @Override
+ protected void onPause() {
+ int state = StatusBarManager.DISABLE_NONE;
+ mStatusBarManager.disable(state);
+ super.onPause();
+ }
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// 是否触发按键为back键

以下是从MTK Online 上面找到的解决方案,保留备用。
Google从KK开始增加了状态栏透明以及全屏界面有通知可以下拉状态栏的设计,而这个设计出现的隐患是设置了FULL_SCREEN的界面是无法禁止状态栏下拉的,这样对一些工程测试app可能会造成一定的影响,但是以google默认的设计,应用端无法修改此设计来满足自己的需求。
MTK 内部已经开发提供新的接口来实现全屏界面禁止下拉状态栏,如果贵司的代码还没有这部分逻辑,请参考如下:
1. frameworks\base\core\java\android\view\View.java

[java] view plain copy
public static final int SYSTEM_UI_FLAG_IMMERSIVE_STICKY = 0x00001000;
+ /**
+ * @hide
+ *
+ * NOTE: Flag for {@link #setSystemUiVisibility(int)}: It help user to disable transient
+ * status bar triggered by gesture
+ */
+ public static final int SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED = 0x00002000;

2. frameworks\base\policy\src\com\android\internal\policy\impl\PhoneWindowManager.java

[java] view plain copy
// monitor for system gestures
mSystemGestures = new SystemGesturesPointerEventListener(context,
new SystemGesturesPointerEventListener.Callbacks() {
@Override
public void onSwipeFromTop() {
+ if (isGestureIsolated())
+ return;
if (mStatusBar != null) {
requestTransientBars(mStatusBar);
}
}
@Override
public void onSwipeFromBottom() {
+ if (isGestureIsolated())
+ return;
if (mNavigationBar != null && mNavigationBarOnBottom) {
requestTransientBars(mNavigationBar);
}
}
@Override
public void onSwipeFromRight() {
+ if (isGestureIsolated())
+ return;
if (mNavigationBar != null && !mNavigationBarOnBottom) {
requestTransientBars(mNavigationBar);
}
}
@Override
public void onDebug() {
// no-op
}
+ private boolean isGestureIsolated() {
+ WindowState win = mFocusedWindow != null ? mFocusedWindow : mTopFullscreenOpaqueWindowState;
+ if (win != null && (win.getSystemUiVisibility() & View.SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED) != 0)
+ return true;
+ else
+ return false;
+ }
});

3. 请在修改完framework后,将测试app用setSystemUiVisibility的API加上SYSTEM_UI_FLAG_IMMERSIVE_GESTURE_ISOLATED的flag
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
宁波社保卡办理需要什么材料 宁波社保卡如何申领 有什么高性价比的隔离霜可以推荐? 防晒效果好的隔离霜有哪些值得入手? 下雨天经常爬在房子墙上的那种软体动物,不是蜗牛没壳的,可以在墙上把身... 原来是美男啊里面插曲、主题曲都有哪些? 请问下各位大虾,我在外地用外地农行卡网上转账到本地邮政卡星期六转账的... 为什么用支付宝买东西明明我余额足够,付款时却说我余额不足?2个... 萍乡烛式过滤器品牌 衡水烛式过滤器品牌推荐 如何禁止安卓手机下拉状态栏 有没有大佬知道有哪个软件可以设置让安卓手机游戏中禁止下拉通知栏 android swiperefreshlayout怎么禁止下拉刷新? 感应自动门怎样改指纹考勤机门禁 感应自动门改装门禁? 自动感应门控制器调慢速怎么调? 感应门控制器电脑设置还是手动设置 感应门,可以在中控室 控制开关,门开之后有个反馈信号反馈给中控室,求解答 电动玻璃感应门,关闭后能否手动推开. 电动玻璃移门可以手动和感应随便切换吗 感应门怎样改成按钮控制的自动门 手动自动两用的感应门怎么设置啊? 平开自动门能改为开关控制吗? 自动感应门怎么接手动开关? 感应门改手动开关怎么改 自动感应门怎么改成开关手动开关门 平安保险公司货车驾乘无忧险被保险人指的是谁? 车子买保险,行驶证,驾驶证和车子的名字都是老公,投保人和被保险人都是我可以吗? 高三生应该如何调整自己心态 高三怎么保持良好的心态? android swiperefreshlayout怎么禁止下拉刷新 安卓5.0通知栏无法下拉 新了android 7.1.1,下拉菜单里的好多提示信息关不掉 安卓手机玩游戏为什么不能像苹果手机那样关闭下拉通知栏呢? Android 控件smartRefeshLayout只要下拉刷新,禁止上拉加载 用vlc播放easydarwin实时流,为什么前几秒都是花屏 小米手机安卓系统怎么锁定下拉的那个任务通知栏或删除! 用vlc连接rtsp服务器,出现错误。。各位大侠们帮忙看看。。 安卓系统手机状态栏下拉菜单的顶部变成了“无服务” 我想用硬盘录像机,录vlc建立的rtsp流,如何实现?现在可以显示已连接但是没有视频画面。 安卓设备上滑下滑左右点击没有通知栏, 求助VLC不能播放RTSP流地址,为何PLAY后又重新请求RTSP-CSDN论坛 如何用vlc搭建rtsp服务器 如何使用vlc发送rtsp命令 VLC使用RTSP协议串流时路径格式应该怎么填写 用VLC的rtsp流传送流媒体,如何对由IP地址和端口号组成的URL进行抓包分析? rtsp 暂停,快转,该怎么处理 图片怎么样改变图像大小 玛瑙有假的吗?怎么识别 鉴别玛瑙原石最简单方法