2009-08-03 211 views
24

我想要求用户在允许卸载/删除我的应用程序之前先输入密码。我怎样才能实现这个功能?要求输入密码才能卸载/删除应用程序

+1

你可以给一些更多的细节。操作系统,语言等 – 2009-08-03 10:16:52

+0

在android, 安装应用程序时,它应该询问用户名和密码。 并且在卸载应用程序用户时应输入正确的用户名和密码。 – arams 2009-08-03 10:24:24

+17

这是不是有点苛刻?作为一名客户,如果我不得不输入密码来卸载一个软件,我会非常失望!我会救自己的麻烦,而不是实施它。 – Steg 2009-08-03 10:29:26

回答

1

这是一个难题。我至少可以想到一个非邪恶的用例。

例如被盗电话恢复应用程序 - 你希望阻止你的手机卸载应用程序。

在这种情况下,我能想到两个懂事的假设这会阻止我实现你在找什么:

  • 小偷不知道你的应用程序,所以不会尝试卸载它。
  • 小偷知道你的应用程序,并关闭它,直到他可以将它拿到铁盒*重新安装操作系统。

*对于外行人:iron box会阻止设备发送或接收电磁信号。

当然,这个答案相当于You Ain't Going To Need It,虽然我怀疑你已经考虑过了。

13

您可以通过这样做:

  • 安装程序的第一个时间,安装一个单独的应用程序/包(“守望者”)。
  • 唯一的类“守望者”中包含的是侦听ACTION_PACKAGE_REMOVED
  • 添加一个BroadcastReceiver到您的应用程序,还监听ACTION_PACKAGE_REMOVED
  • 当意图被广播到您的接收器一个,检查其他部件的广播接收器仍然安装。如果不是(用户只是卸载它),提示输入密码 - 如果错误,重新安装其他组件。如果它是正确的,请卸载自己。
4

您可以执行logcat并获取启动活动意向信息。 您会发现,在显示卸载活动之前,有 的文本消息,例如: 开始活动:意图{act = android.intent.action.DELETE dat = package:com.comodo.pimsecure cmp = com。 android.packageinstaller/.UninstallerActivity} 然后你可以弹出一个活动询问密码了。

1

这是可能的。你可以用DeviceAdminReceiver api来完成。 (我不知道如何)