当前位置: 首页 > 知识库问答 >
问题:

永久禁用和隐藏Android导航栏/通知菜单

松俊美
2023-03-14

我正在为一所学校开发一个Android应用程序,我想打开这个应用程序,以防止用户在设备上做任何事情,除了我在我的应用程序内提供的东西,我的意思是什么也不做...所以首先导航栏应该被禁用和隐藏

我看到了这一点,但它适用于4.4版,它并不能解决问题,因为如果你滑动屏幕,你将返回菜单。(如何在android活动中永久隐藏导航栏?)

这也不起作用(在活动中永久隐藏导航栏)(有没有办法在Android ICS中隐藏系统/导航栏)我也尝试使用onKeyDown禁用导航栏操作,但对所有键都不起作用。

此外,我想删除通知栏,使用户访问设备的设置和其他东西。.

这也不起作用(禁止下拉通知面板),正如在这个链接中提到的,它不能解决它,它只是在显示它后隐藏它:S

我们将不胜感激,

谢谢。

共有3个答案

裴存
2023-03-14

您不能禁用Android系统或通知面板。

您可以隐藏这些元素(就像您已经发现的那样),但目前无法永久禁用它们。

您正在寻找不支持的“信息亭模式”。

最接近您所寻找的是“沉浸式模式”(细节)——但这不会永久隐藏设置或导航控件。

孔华池
2023-03-14

要禁用状态通知栏,请执行以下操作:

您需要在通知栏顶部放置一个视图,以便我们将触摸事件劫持到状态通知栏。不用多说,下面是代码:

mView= new TextView(this);                                       
mView.setText(".........................................................................");                       

mLP = new WindowManager.LayoutParams(
        WindowManager.LayoutParams.MATCH_PARENT,
        100,
        // Allows the view to be on top of the StatusBar
        WindowManager.LayoutParams.TYPE_SYSTEM_ERROR,
        // Keeps the button presses from going to the background window
        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
        // Enables the notification to recieve touch events
        WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
        // Draws over status bar
        WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
        PixelFormat.TRANSLUCENT);

mLP.gravity =  Gravity.TOP|Gravity.CENTER;      

mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mWindowManager.addView(mView, mLP);

由于您正在使用“系统覆盖”窗口,您需要以下权限:

<uses-permission android:name="android.permission.SYSTEM_OVERLAY_WINDOW" />

注:

不要让你的应用程序全屏显示,因为支持沉浸式模式的17以上版本会破坏这种方法。

谷梁楷
2023-03-14

您可以在Android 5.0中获得一个kiosk类型模式,使用这里提到的屏幕锁定功能:

Android 5.0引入了一个新的屏幕固定API,允许您临时限制用户离开任务或被通知中断。例如,如果您正在开发一个教育应用程序,以支持Android上的高风险评估要求,或者一个单一用途的应用程序或kiosk应用程序,则可以使用此功能。一旦应用程序激活屏幕锁定,用户将无法看到通知、访问其他应用程序或返回主屏幕,直到应用程序退出该模式。

您可以将设备锁定为信息亭。导航栏不隐藏,但可以删除或禁用“主页”和“最近”按钮,具体取决于激活模式的方式。在这里测试了这个特性之后,我写了一些信息。

 类似资料:
  • 我正在做一个应用程序,并有权访问系统权限。我想让导航栏永久隐藏,它甚至不应该出现在用户交互上。 现在我使用这段代码,它隐藏了条,但当用户触摸屏幕时,它会再次显示。是否有任何方法可以永久隐藏它,直到活动停止(); 如有任何关于最佳实施的技术咨询或意见/建议,将不胜感激。

  • 是否可以永久删除活动上的导航栏?我想删除与按钮出现在平板电脑屏幕上的按钮,而不是操作栏。这里。 我知道不建议那样做,我没有做这个决定,但我需要这样做。在我的布局上,还有一个按钮离开活动。我的应用程序的其余部分可以有导航栏。 我找到了这段代码,并对其进行了一些修改。问题是,即使我隐藏了导航栏,也会留下一个黑色的空间。我猜系统计算屏幕大小时考虑了导航栏?

  • 我想在我的活动中永久隐藏导航栏(而不是整个系统ui)。现在我正在使用这段代码 它隐藏栏,但是当用户触摸屏幕时,它会再次显示。有没有办法永久隐藏它,直到活动;

  • 在android上隐藏永久系统栏最好的方法是什么?我想要一个没有系统栏的全屏app。到目前为止,我所得到的是隐藏栏,但如果我向上滑动,它就会出现。 有什么建议吗?

  • 问题内容: 我可以使我的应用程序通过SFSafariViewController自动加载此帖子的网址,并且效果很好,唯一的缺点是导航栏。 以这种方式使用SFSafariViewController导航栏时,它是无用的,因为url是只读的,并且“ done”链接除了重新加载页面外不执行任何操作。因此,我想完全隐藏导航栏。 根据已接受答案的注释,建议将我的根视图控制器设置为SFSafariViewCo

  • 我为android制作了一个全屏应用程序,它隐藏了两个导航栏 但这个代码对Jelly Bean不起作用,它只会隐藏一次条,一旦你触摸屏幕,它们就会重新出现。所以我知道下面的代码支持Jelly Bean,但它只隐藏了状态栏: 有人能告诉我如何在Jelly Bean上永久隐藏导航栏吗?