如何防止用户关闭应用程序 - Android 4.0.3
Posted
技术标签:
【中文标题】如何防止用户关闭应用程序 - Android 4.0.3【英文标题】:How to prevent user from closing application - Android 4.0.3 【发布时间】:2012-07-30 07:37:50 【问题描述】:所以我的问题是:是否可以阻止用户关闭应用程序。
问题是因为我无法隐藏操作栏,而且我仅将平板电脑用于工作时间注册。因此,如果有人按主页按钮或返回按钮是不可接受的。
所以我想知道我是否可以以某种方式处理 onclose 事件?
是否可以全屏打开应用程序(没有操作栏)?
【问题讨论】:
反对票到底是为什么?这张海报想要为 android 创建一个信息亭模式的应用程序。 试试这个 *** 搜索:***.com/search?q=[android]+kiosk。我相信你会在那里找到你想要的东西(或者至少得到一些想法) @DavidWasser 如果您作为主题专家可以为这个和未来的类似问题确定一个很好的重复目标,这可能会有所帮助 【参考方案1】:如果用户按下主页按钮,您无法阻止用户关闭应用程序。这就是它的全部想法。否则,您可能会让用户被困在您的应用程序中,无法退出,只能重新启动设备。
【讨论】:
是的,这正是我所需要的。用户被困在我的应用程序中。知道我该怎么做吗? @Michael - 最好的办法是拥有自己的 Android 版本,然后你就可以诱捕它们。 这不是真的。您可以编写一个主屏幕替换,当按下 HOME 按钮时将获得控制。发帖人想要创建一个只运行一个应用程序的单一用途设备。他不是在谈论随机用户可以下载的市场应用程序。此外,您不需要创建自己的 ROM 来执行此操作。这将是比付出更多的努力。 他没有说明他的应用程序的目的,所以我认为它是“常规”安卓应用程序而不是启动器应用程序【参考方案2】:简短的回答是否定的。
长答案是,您可以让用户很难关闭您的应用程序。可以使用的一些技巧是:reopen you app as soon as it closes、disable keys like back and power,最后是disable the home button
【讨论】:
【参考方案3】:用户将始终能够关闭应用程序,否则会有程序滥用它并导致问题,但您可以采取一些步骤来更好地处理它被关闭的情况。
例如,如果您正在运行一个可以检查应用程序是否正在运行的远程服务,并且可以通过多种方式知道,那么它可能会触发再次启动应用程序的意图。
了解一个程序是否处于活动状态的一种方法是让它定期调用服务,基本上是做一次心跳检查,如果它在一段时间内没有被调用,应该比它大 2 到 3 倍预期的签入时间,然后触发 Intent。
如果您检测到主页按钮被按下,还有其他步骤可能有效,但我需要仔细考虑这些步骤。不过,我认为这取决于您的期望,因为将某人困在您的程序中会非常糟糕。
【讨论】:
是的,将某人困在应用程序中确实很糟糕,但这款平板电脑仅适用于该应用程序。 将用户困在单个应用程序中是完全正当的。 Android 平板电脑是安装在信息亭中或在“信息亭模式”下使用的完美设备,正是这样 - 设备成为单一用途的设备(即:它只运行一个应用程序和一个应用程序)。您无需费心构建自己的 ROM。 @DavidWasser - 他想确保它始终处于启动状态,它不能被杀死,并且主页按钮可能是问题所在,因为可以启动其他东西。但是,这就是为什么我提出了一个可能的解决方案,并且当我更多地考虑它时可能是正确的解决方案(检测主页按钮按下)。但是,在标准的 Android 操作系统上,要让它永不消亡是很困难的。 @JamesBlack 我们已经成功地为 Android 平板电脑构建了 kiosk 模式应用程序(无需看门狗服务重新启动应用程序)。如果它是设备上唯一运行的应用程序,我从未见过 Android 杀死了主屏幕替代品。当然,您的里程可能会有所不同;-)【参考方案4】:试试这个...
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
参考-> How to hide the title bar for an Activity in XML with existing custom theme
防止用户.......
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
if(keyCode==KeyEvent.KEYCODE_BACK || keyCode==KeyEvent.KEYCODE_HOME)
// pass some msg ......
return true;
return super.onKeyDown(keyCode, event);
【讨论】:
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 你把这段代码放在哪里了?用什么方法?它需要进入onCreate()
,并且需要在您致电setContentView()
之前完成
只是参考。 ***.com/questions/2591036/…这个链接隐藏它.....【参考方案5】:
所以这是我的有效解决方案...
首先安装 SureLock 应用程序的试用版。然后在该应用程序中禁用操作栏。就是这样。
如果您想再次查看操作栏,您需要HideBar app
所有这些都只适用于有根设备...
【讨论】:
以上是关于如何防止用户关闭应用程序 - Android 4.0.3的主要内容,如果未能解决你的问题,请参考以下文章