禁用Android主页按钮以用于工业应用

7
我正在编写一个行业应用程序,交通警察将通过我的程序使用表单注册违规行为。
该应用程序使用Webview,因此它只是外部网页的容器。我们不希望用户退出应用程序,因此必须禁用所有按钮。我成功地禁用了它们,除了主页按钮。
我阅读了一些关于这个主题的帖子,但我还没有任何解决方案。想法是我能够使应用程序成为默认的主页应用程序,因此如果用户按下主页按钮,它会启动我的应用程序而不是退出。我如何实现这一点?如果必须的话,我们可以篡改Android本身(在安装应用程序时),但如果有一些通过配置的解决方案,那将不胜感激。

为了缓解这个问题,您可以创建一个整个主屏幕大小的小部件来启动您的应用程序。当用户意外按下“主页”时,他可以立即切换回来。 - 9000
2个回答

10
这个想法是让我的应用成为默认的主屏幕应用程序,这样当用户按下主屏幕按钮时,它会启动我的应用而不会退出。我该如何实现?
在Android SDK中有一个示例Home应用程序,可以仿照其清单条目,尤其是将HOME类别放在活动的中。
第一次安装您的应用程序后,当交通管理员点击HOME键时,将出现一个选择器以运行哪个主屏幕应用程序。勾选复选框并点击您的应用程序,然后HOME按钮将永远运行您的应用程序。
除了创建自定义主屏幕应用程序外,没有其他方法可以拦截HOME按钮,除非进行固件修改。

好的,谢谢。那很有帮助。由于我们的支持部门会在PDA上安装软件,因此我们可以给他们提供设置我们应用为主页的说明。 - Adam Arold
如果我想再次使用旧的默认主屏幕怎么办?卸载我的主屏幕应用程序可以实现这一点吗? - Mudassir
1
@Mudassir:卸载当前主屏幕将起作用。此外,在设置的“管理应用程序”部分,如果您单击当前主屏幕,我认为您将能够单击“清除默认值”按钮,这将导致用户在下一次HOME点击时再次获得选择器。 - CommonsWare

0
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    getWindow().addFlags(  WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

}

@Override
public void onBackPressed() {

   return;
}

@Override
public void onAttachedToWindow()
{  

       this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);     
       super.onAttachedToWindow();

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接