在Android中禁用"强制停止"按钮

Rha*_*awa 7 android

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

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

 Settings > Manage Application > [Our Application]
Run Code Online (Sandbox Code Playgroud)

,"强制停止"按钮被禁用.

这可能吗?如果有可能的话,有人会指出我应该走哪条路,或者如果不可能的话,如何使用基于事实的有效论据,我应该如何向她揭穿新闻.

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

Evernote启动器 - 禁用强制停止

gon*_*ins 11

如何禁用"强制停止"按钮

简短回答:使用设备管理API.

如何向我的客户解释这个?

显示对您的客户端.这是一个很好的幻灯片,提供了一个易于理解的Device Administration API概述及其用途.

我如何证明它有效?

是的,回到你的工作.使用上面提供的API链接和Google 示例集中包含的Api演示来确定如何将其集成到您的应用中.

  1. 构建演示并在您的设备上运行它.
  2. 选择API Demos->App->Device Admin->General->Enable admin.
  3. 选择Activate一旦设备管理API提示您启用它的屏幕.
  4. 退出应用程序并尝试通过设备的设置菜单管理应用程序(此步骤的具体信息因设备而异).
  5. 查看Api Demo的"应用信息"屏幕时,您应该看到两者Force Stop并被Uninstall禁用.

我如何在自己的应用程序中执行此操作?

Api Demos应用程序中查看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);
Run Code Online (Sandbox Code Playgroud)

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

  1. 从DeviceAdminReceiver派生的广播接收器.
  2. 清单文件中引用上述广播接收器的条目.
  3. 清单中使用Device Administrator API的权限.
  4. 一个xml文件,说明您的应用可以访问哪些政策.

所有这些都可以在上面的链接中找到.祝你的客户好运!


Kri*_*ski 10

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

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

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

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

  • @gonzobrains 是的,你是对的,设备管理 API 确实添加了此功能 (2认同)

Raj*_*jan 6

我认为设备的屏幕截图使我们感到困惑。甚至我可以显示安装在设备上的应用程序,并且“强制停止”按钮被禁用。因为我还没有做任何特定的事情。

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

问候,

拉詹

  • 发送回已启用的Evernote强制停止按钮的屏幕截图。 (5认同)