Android - 删除主页和导航按钮

时间:2015-12-03 11:22:03

标签: java android android-homebutton

我正在尝试删除“主页”按钮和“多线程”按钮。我们的想法是将其从正在运行的应用程序中完全删除,如果我们可以从我们正在使用的平板电脑上的每个应用程使用全屏不是我们想要的,因为用户不应该能够退出全屏模式,即使他想要它(它是一个自定义的商业应用程序,由于多种原因,它是所需的行为)。

Nexus 10 without the home and navigation buttons

这是Nexus 10的结果。我们通过在编译CyanogenMod之前获取SystemUI源并更改它们来实现。

不幸的是我们必须在华硕ZenPad 10中复制它,没有CyanogenMod可用。我们有一个允许我们创建系统应用程序的版本,但是将每个应用程序更改为系统应用程序并不是我们想要的。

我们在此链接中找到了http://developer.oesf.biz/em/developer/reference/eggplant/constant-values.html#android.view.View.STATUS_BAR_DISABLE_HOME

有用于禁用主页按钮和导航按钮的标志,但它们仅可用于系统应用程序。

我们已经尝试在平板电脑中编译SystemUI.apk,对其进行反编译并进行更改。问题是,或者我们有无用的smali文件或只有res /和AndroidManifest.xml文件(华硕将SystemUI.apk改为它自己的两个apks)。

所以...我们在这里有点绝望啊。寻找提示/想法尝试删除按钮。更好,无需重新编译或做一些奇怪的事情。

6 个答案:

答案 0 :(得分:3)

使用Immersive Full-Screen Mode等权限以及SYSTEM_UI_FLAG_HIDE_NAVIGATIONSYSTEM_UI_FLAG_FULLSCREEN标记的组合可以实现这一点。这些标志隐藏了导航和状态栏,现在您有一个空白屏幕,在屏幕底部放置一个线性laoyout,只显示后面的图标,只是为了创建您想要的效果。另请注意,重要的是要了解一旦用户向上滑动,就会看到正常的导航栏(不确定是否可以通过拦截触摸事件进行处理)。

另外,您也可以尝试这里提到的解决方案 How to disable Home and other system buttons in Android?

也参考这个github项目(如果只有硬件导航按钮,则有效) https://github.com/shaobin0604/Android-HomeKey-Locker

最后但并非最不重要有一个commsware的答案,可以为这个主题提供更多的亮点。 Not able disable Home button on specific android devices

答案 1 :(得分:1)

尝试Android for work APIsrefer here。使用此apis,您可以完全控制设备并禁用您想要的任何内容。该设备只能用于单个应用。

  

公司拥有的一次性使用(COSU)是共享或特殊用途设备的公司责任场景的子集。与与个体员工相关联的公司责任设备不同,COSU设备与特定业务功能相关联。例如,COSU设备可能会用作自助服务终端。

您还可以尝试集成OEMS / MDM供应商/ MDM合作伙伴(如三星,HTC,Airwatch等)提供的自定义MDM(移动设备管理)解决方案。此工作也适用于棒棒糖之前的设备 和提供更多的API来控制设备,而不是默认的android解决方案。

我知道三星MDM / Knox解决方案很好,它有API来控制设备的每个部分.Refer- http://www.samsung.com/levant/business/solutions-services/mobile-solutions/security/mobile-device-management他们有Kiosk模式,类似于COSU。

答案 2 :(得分:0)

您将向用户请求许可。在这辆车里,这就是你自己。请注意,因为您必须实现退出应用程序的方法。

参考:disable home

或者你只是可以购买一个盒子来粘贴它,所以按钮将不可见......

答案 3 :(得分:0)

使用沉浸式模式,在onResume()中使用此代码,这样每次回到你的活动时它都会运行并隐藏它们

View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                          | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                          | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                          | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                          | View.SYSTEM_UI_FLAG_FULLSCREEN
                          | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

答案 4 :(得分:0)

当然,你不能删除任何系统按钮,如电源音量+/- 主页返回菜单。您只能在虚拟时隐藏或显示主页返回菜单(与实体按钮相反) )。

同时,隐藏导航栏是有限的。它只能在Android 4.0及更高版本上完成。因此,如果要执行此操作,则需要使用SYSTEM_UI_FLAG_HIDE_NAVIGATION标志。此代码段隐藏了导航栏和状态栏:

View decorView = getWindow().getDecorView();
// Hide both the navigation bar and the status bar.
// SYSTEM_UI_FLAG_FULLSCREEN is only available on Android 4.1 and higher, but as
// a general rule, you should design your app to hide the status bar whenever you
// hide the navigation bar.
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
              | View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);

而且,如果要将应用程序的内容设置为显示在导航栏后面,则需要SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION标记。您可能还需要使用SYSTEM_UI_FLAG_LAYOUT_STABLE来帮助您的应用保持稳定的布局。

答案 5 :(得分:0)

我已经尝试了很长一段时间并且搜索了很多 但正如您所知,HOME按钮是用户离开的唯一方式 任何情况下的任何应用程序阻止它的风险非常大,谷歌也不允许这样做。

您可以做的一件事是将您的应用程序设置为启动器应用程序然后您可以接收keyevent Home