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

时间:2014-08-24 12:02:58

标签: android

我正在开发一个学校的Android应用程序,我希望这个应用程序在打开时防止用户在设备上做任何事情,除了我在我的应用程序中提供的内容,我的意思是做 NOTHING 其他。 .. 所以首先应该禁用并隐藏导航栏

我看到了这个,但它的4.4+并没有解决问题,因为如果你刷屏幕,你将得到菜单。 (How to hide navigation bar permanently in android activity?

这也不起作用(Permanently hide navigation bar on activity)(Is there a way to hide the system/navigation bar in Android ICS) 我还尝试使用onKeyDown禁用导航栏操作,但它不适用于所有键。

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

这也不起作用(Disable the notification panel from being pulled down)如此链接中提到的它没有解决它,它只是在显示它后隐藏它:S

帮助将不胜感激,

感谢。

3 个答案:

答案 0 :(得分:4)

您可以使用提到的屏幕固定功能here在Android 5.0中获得自助服务终端类型模式:

  

Android 5.0引入了一个新的屏幕固定API,可以让你   暂时限制用户离开任务或被中断   通过通知。例如,如果你这样做,可以使用它   开发教育应用程序以支持高风险评估   Android或单一用途或信息亭应用程序的要求。   一旦您的应用激活屏幕固定,用户就看不到了   通知,访问其他应用程序或返回主屏幕,直到   您的应用退出模式。

您可以将设备锁定为自助服务终端。导航栏未隐藏,但可以删除或禁用主页和最近按钮,具体取决于您激活模式的方式。我在测试了这个功能here之后写了一些信息。

答案 1 :(得分:2)

可能

要禁用状态通知栏:

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

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以上版本将会破坏这种方法。

答案 2 :(得分:1)

您无法在Android中停用系统或通知面板。

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

您正在寻找一种“Kiosk模式”&#39;这是不受支持的。

与您正在寻找的最接近的是“沉浸式模式”&#39; (details) - 但这不会永久隐藏设置或导航控件。