如何防止用户关闭我的应用程序?

13
我有一个将被用于餐厅的安卓应用程序,所以我希望用户无法退出该应用程序。唯一可以让用户做的事情就是使用应用程序。(如果可能的话,只有管理员才能退出应用程序,通过登录或重新启动设备,我不知道哪种方法更好)。是否有解决方案或其他方法实现这一点?

我想不出任何情况,用户不应该掌控自己的设备或应用程序。此外,在极端情况下,用户可以关闭设备(拔掉电池),然后重新启动设备而无需再次启动该应用程序。 - Master Chief
你需要的是一个展示模式应用程序,我记得在4.2版本中可以编写主屏幕应用程序,其行为方式类似于这样:http://commonsware.com/blog/2013/02/20/android-4p2-for-kiosk-apps.html - marcinj
2
@MasterChief他想在餐厅内使用该应用程序,不希望他的工人在工作时使用崭新的安卓手机玩愤怒的小鸟游戏!明白了吗? - Kosh
2
@StyleMe 你懂的!;) 不是给工人,而是给客户.. 客户可以在平板电脑上看到餐厅的菜单;设备不是他们的智能手机/平板电脑,而是我的。 - Nerd
@StyleMe 谢谢!我会尝试的...但是使用这段代码,我该如何退出应用程序? - Nerd
你可以使用双击返回按钮或任何你喜欢的方法,只需调用finish();即可。 - Kosh
2个回答

3

Android只提供返回按钮覆盖功能。它不允许用户禁用主键和最近打开键。

但是,我们可以通过以下方式将主屏幕替换为我们的应用程序:首先,我们选择我们的应用程序作为启动器。因此,如果用户按Home键,则主屏幕会替换为我们的应用程序,并且它只会打开我们的应用程序。要实现此效果,请在清单文件中添加以下行:

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.HOME" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

1
这太不可思议了!!! - Said Torres

2
您可以重写onBackPressed方法。
@Override 
public void onBackPressed(){  
  Toast.MakeText(getApplicationContext(),"You Are Not Allowed to Exit the App", Toast.LENGTH_SHORT).show();
}

这将防止后退按钮退出应用程序。

然后,您还需要像覆盖主页按钮一样重写home button

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_HOME) {
        Log.i("TEST", "Home Button");  // here you'll have to do something to prevent the button to go to the home screen 
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

编辑:对于安卓版本为4.0.xx的新设备,您还需要覆盖最近使用的应用程序按钮。希望这能帮助到您。

你的“home button override”代码应该放在应用程序中还是HomeScreen应用程序中? - Daniil Shevelev
应用程序,这段代码是去年发布的,所以我不能保证它现在能够正常工作。 - Kosh

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