为什么再次提出同样的问题
关于SO,这个问题已被问过大约100次.我再次问它,因为所有答案都说,this is not possible但至少市场上的一个应用程序正在这样做NQ Mobile Security.在类似问题上我开始获得100分的赏金,但没有得到足够的重视.如果社区不接受我将删除该问题.
应用程序正在做什么
当用户尝试卸载它时,该应用会显示一项活动

并在卸载之前进行一些处理

我的问题是什么?
如何在早先在其设备上安装应用程序的用户卸载应用程序之前Activity或IntentService之前启动?
问题是这个 - 我的应用获得管理员权限,从UI POV获取它们非常容易.然而,一旦应用程序有这些权利,很繁琐将其卸载(用户必须首先撤销这些管理权限;如果没有,在卸载时不存在什么信息与卸载走错了 - 至少在王牌2的Android 2.3).
因此,在应用程序中安装卸载功能会很有用 - 它会首先撤消管理员权限,然后按照正常卸载进行操作.
另一种方法是通知应用程序是要卸载的程序,但据我所知这是不可能的-看到:http://code.google.com/p/android/issues/detail?can=2&q=33315&colspec=ID% 20Type%20Status%20Owner%20Summary%20Stars&ID = 33315
到目前为止,我只提出了解决方法 - 为了节省用户问题,如果应用程序已准备好卸载,请添加"清除卸载"按钮并显示状态信息.但是,用户必须再次卸载我的应用程序.无论如何麻烦.
那么 - 如何卸载自己?
只是为了保持代码在SO网站上:
Uri packageURI = Uri.parse("package:"+MyMainActivity.class.getPackage().getName());
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
startActivity(uninstallIntent);
Run Code Online (Sandbox Code Playgroud)
代码是从Android Tales Blog复制的.