如何使Android应用程序无法关闭

时间:2015-01-27 18:35:51

标签: android android-studio android-4.2-jelly-bean


我正在为一家公司开发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

3 个答案:

答案 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设置为启动器,并阻止顶部滚动以防止出现状态栏。

我认为对于内部应用程序来说已经足够了!