Android如何防止用户关闭应用程序

4
有没有一种方法可以构建定制的移动设备管理(MDM)系统,强制应用程序始终保持打开状态,即不允许用户关闭?
我正在构建一个图像库应用程序,供用户使用。但我不希望他们能够关闭我的应用程序。
谢谢。
类似这样的东西吗?
public class IntentReceiver extends BroadcastReceiver {
    public static final String TAG = IntentReceiver.class.getSimpleName();


    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG, "onReceive - intent => " + intent.getAction());

        //Get Intent
        String action = intent.getAction();

        if("android.intent.category.HOME".equals(action)) {

            Intent i = new Intent();
            i.setClass(context, MainActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(i);
        }

但是,我也需要知道应用何时关闭或被杀死?
让我尝试更好地解释。想象一下,如果一个艺术家想通过10个安卓设备展示他的作品。所有设备都在墙上。因此,他可以使用这个应用程序。我想锁定设备,只运行这个应用程序,不允许其他任何操作。类似于当您去手机店,所有设备都运行演示应用程序,您无法在没有密码的情况下退出它。 (即苹果商店)您无法退出正在这些iPad上运行的应用程序。

3
听起来不太舒服。 - RogueBaneling
2
为什么任何用户都想要这个? - Coder
1
@Joolah 你可以开发一个自定义启动器,根据定义,它无法退出。 - neomega
nobalG不是公开的应用程序。它是为艺术家和店主设计的。 - Thiago
也许你可以为此创建主屏幕小部件?如果你试图阻止Android用户离开应用程序,他们会感到非常愤怒(至少我会)。 - Chaosit
显示剩余7条评论
3个回答

1

我写了一篇关于Android Kiosk模式的文章 - 不仅仅是“任务固定”。

http://www.sureshjoshi.com/mobile/android-kiosk-mode-without-root/

  • 创建一个DeviceAdminReceiver并将其放入您的清单中
  • 然后运行dpm以授予自己设备管理员访问权限

adb shell dpm set-device-owner com.sureshjoshi.android.kioskexample/.AdminReceiver

  • 在应用程序中验证您是设备所有者,然后您就可以开始了

这需要一定的工作量,但是一旦完成模板代码,您将使用此片段启用和禁用。

private void enableKioskMode(boolean enabled) {
    try {
        if (enabled) {
            if (mDpm.isLockTaskPermitted(this.getPackageName())) {
                startLockTask();
                mIsKioskEnabled = true;
                mButton.setText(getString(R.string.exit_kiosk_mode));
            } else {
                Toast.makeText(this, getString(R.string.kiosk_not_permitted), Toast.LENGTH_SHORT).show();
            }
        } else {
            stopLockTask();
            mIsKioskEnabled = false;
            mButton.setText(getString(R.string.enter_kiosk_mode));
        }
    } catch (Exception e) {
        // TODO: Log and handle appropriately
    }
}

你好@SJoshi,我无法访问链接网址。看起来,网站已经宕机了。 - Thiago
@Joolah 你确定吗?我在那个网站上几周内没有遇到任何停机时间。 - SJoshi
您的网站还好,只是今天早上博客文章挂了大约1个小时。 - Thiago
@Joolah 哦,好的,抱歉! - SJoshi
1
我已经完成了,现在它可以工作了。但是我需要更新应用程序,我无法通过Android Studio重新运行该项目,它显示DELETE_FAILED_DEVICE_POLICY_MANAGER。此外,我无法从设备中删除该应用程序。请给予建议。谢谢。 - Thiago

0

0

正如@Sarge所说,从5.0版本开始就有了Kiosk模式。如果您没有运行在5.0版本上,请告诉我,我会花一些时间搜索我的旧项目,并为您提供一个预先制作的棒棒糖自制Kiosk模式(无需刷机或任何其他操作,只需编程)。


谢谢您的时间。我打算在三星GT平板电脑上使用它们。它们运行在4.4.2上,不会运行5.0。 - Thiago
使用Android 5+的优势还有很多其他原因。我建议尽力获得支持Android 5的设备... - Display Name
Joolah,我今天下午会尝试看一下,需要注意的是,这将需要做很多事情,比如将您的应用程序设置为“主屏幕”,我会尽快完成。@SargeBorsch 我同意获取5+版本会更容易,但问题在于有些制造商不允许用户获取下一个版本,因此您必须使用您所拥有的(每个设备仍需200欧元以上,因此购买新设备以获得正确版本并不总是最佳方式)。此外,按照5+的方式进行操作意味着您无法向每个公司/用户开放您的应用程序(假设它是专业应用程序),需要牢记这一点。 - Bxtr
@Bxtr SargeBorsch,谢谢你们的帮助。三星GALAXY TAB 3 10.1 P5210将无法升级到5.0版本。此外,我也无法对这些设备进行root操作。 - Thiago
他们不需要成为root用户 ;) - Bxtr
我的意思是,用“更好”的设备替换它也是需要考虑的事情。 - Display Name

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