在Android中禁用“强制停止”按钮

时间:2012-02-28 06:48:39

标签: android

好的,我很确定这是不可能的,但客户要求我在我们为她开发的一个Android应用程序中这样做。

她想要的是,如果我们的应用程序正在运行,并且用户导航到:

 Settings > Manage Application > [Our Application]

,“强制停止”按钮被禁用。

这可能吗?如果有可能,有人可以指出我应该走哪条路,或者如果不可能,如何使用基于事实的有效论据,我应该如何向她宣传这些消息。

更新 她刚给我发了一个屏幕截图,在她看来,验证了她的请求,即有一个Android应用程序禁用“强制停止”按钮。我怎么能向她解释这个?

Evernote Launcher - Force Stop disabled

6 个答案:

答案 0 :(得分:11)

如何禁用“强制停止”按钮

简答:使用Device Administration API

如何向我的客户解释此信息?

向您的客户展示this。这是一个很好的幻灯片,提供了一个易于理解的Device Administration API概述及其用途。

如何证明它有效?

是的,回到你的工作岗位。使用上面提供的API链接和Google sample collection中包含的 Api演示来弄清楚如何将其集成到您的应用中。

  1. 构建演示并在您的设备上运行它。
  2. 选择API Demos->App->Device Admin->General->Enable admin
  3. 一旦设备管理API通过启用屏幕提示您,请选择Activate
  4. 退出应用并尝试通过设备的设置菜单管理应用(此步骤的具体信息因设备而异)。
  5. 查看Api Demo的“应用信息”屏幕时,您应该会看到Force StopUninstall都被禁用。
  6. 如何在自己的应用中执行此操作?

    Api演示应用中查看 DeviceAdminSample.java 以获取灵感。您将需要以下内容:

    以下代码显示了激活屏幕:

                            // Launch the activity to have the user enable our admin.
                        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
                        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                                mActivity.getString(R.string.add_admin_extra_app_text));
                        startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
    

    但是,还有一些其他部分可以让它发挥作用:

    1. 源自DeviceAdminReceiver的广播接收器。
    2. 清单文件中引用上述广播接收器的条目。
    3. 使用设备管理员API的清单中的权限。
    4. 一个xml文件,说明您的应用可以访问哪些政策。
    5. 所有这些都可以在上面的链接中找到。祝你的客户好运!

答案 1 :(得分:10)

这是不可能的,这是有充分理由的。

你应该告诉她,让这成为可能会是一场巨大的安全灾难。想象一下,如果你可以通过按住唤醒锁来创建只在你的处理器时间吃过的应用程序会发生什么,你就无法杀死它们。这太可怕了。

一般情况下,如果您想知道是否可以修改设备的“额外应用”行为,答案通常是 * no *。您应该认为除了您的应用程序之外,您的设备上没有任何内容可以控制,并且(在有限的范围内)您被授予访问权限的资源。

没有其他应用程序具有此类控制权,因此期望您的客户端也是不合理的。然而,她要求这种控制的事实通常意味着其他事情:他们担心用户会停止应用程序然后会发生不好的事情(这些地点将停止同步,数据将停止发送到网络等等...)。这意味着您应该考虑提高应用程序在不同情况下的弹性。请记住,您的应用甚至可以在任何时候被Android杀死(例如,在内存不足的情况下)。

答案 2 :(得分:4)

我认为设备屏幕截图让我们感到困惑。即使我可以显示设备上安装的应用程序,也禁用“强制停止”按钮。在哪里我没有做任何具体的事情。

禁用“强制停止”按钮的原因是,该特定应用程序当前未运行。因此,启用按钮没有意义。 @Rhama您可以要求您的客户启动应用程序一次,按设备的主页按钮,然后转到设置并查看。当然,这次将启用“强制停止”按钮。

此致

Rajan的

答案 3 :(得分:4)

从ICS开始,禁用强制停止是可能的。如果您的应用程序具有活动设备管理员,则框架将不允许用户终止该进程

答案 4 :(得分:2)

嘿我认为很有可能禁用“强制停止”按钮...检查卡巴斯基 来自市场的家长控制它正在做同样的事情。 它的服务在后台运行,然后强制停止按钮被禁用。

  

应用程序服务正在后台运行

答案 5 :(得分:0)

当应用具有管理员权限时,您可以禁用强制暂停。但是,当这些管理员权利被撤销后,它就会恢复正常。但是在android 4中,一个名为applock(domobile)的应用程序能够通过在您尝试更改管理员权限时询问密码来阻止这种情况。它只能通过安装applock要求你的额外程序来完成。我想这甚至可能被视为安全漏洞,事实上它在Android 5中不再适用。