我正在为一家公司开发Android应用程序,那些使用它的人是员工,因此公司要求我开发一个用户无法关闭的应用程序,因为如果他不将智能手机用于其他目的,但为此我需要Android原生按钮不会干扰应用程序。
我已停用按钮返回并将应用程序设为Home。
@Override
public void onBackPressed () {
super.onBackPressed ();
}
...
<category android: name = "android.intent.category.HOME" />
但是,如果用户单击显示打开的应用程序的按钮,则可以退出该应用程序。
在创建解决这个问题之前我研究了很多,并且实现了几次尝试来解决这个问题。
一。我尝试创建与MX Player相同的行为,当您使用锁定查看视频时,MX Player始终位于所有内容之上,让用户可以查看并单击其他位置。但是,使用这种行为并不能看到我的对话框和Popup,也无法应用thema,因为在我的情况下,不仅仅是一个活动就是整个应用程序。
我尝试的参考链接
How to disable Home and other system buttons in Android?
http://www.piwai.info/chatheads-basics/
如果有人知道如何使用MX Player的行为,或者如果有人知道如何让用户无法关闭应用程序,请帮助我,我知道不仅仅是我有这个问题。
欢迎任何帮助!
我的API是16 - Android-4.1
答案 0 :(得分:0)
您的目标设备是否已植根?如果是这样,this article会通过这些步骤来实现这一目标。您可以通过修改build.prop文件来包含以下行来完成您特别询问的内容:qemu.hw.mainkeys=1
。这将使软键导航栏停止显示。
如果您正在运行的设备没有植根,我认为不可能按照您的要求进行操作。
答案 1 :(得分:0)
我发现用户无法访问其他应用的最佳方式是制作一项服务,检查哪个是最重要的活动,如果不是我的话,那么我会重新打开我的应用。
ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> runningTasks = manager.getRunningTasks(1);
if (runningTasks != null && runningTasks.size() > 0) {
ComponentName topActivity = runningTasks.get(0).topActivity;
if (!topActivity.getPackageName().startsWith("com.mypackage.")) {
Log.i("Top Activity", topActivity.getPackageName());
if (LocalCache.getInstance().isForceHome()) {
Intent intent = new Intent(HomeService.this, AuthLoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
handler.postDelayed(this, 500);
}
答案 2 :(得分:0)
老问题,但我面临的情况完全相同:
我将把App设置为启动器,并阻止顶部滚动以防止出现状态栏。
我认为对于内部应用程序来说已经足够了!