如何在用户卸载App应用程序之前启动活动或服务?

时间:2012-06-16 10:53:34

标签: android

为什么再次提出同样的问题

这个问题在SO上被问了大约100次。 我再次询问,因为所有答案都说this is not possible,但市场中至少有一个应用程序正在执行NQ Mobile Security。在类似问题上我开始获得100分的赏金,但没有得到足够的重视。如果社区不接受我将删除该问题。

应用正在做什么

当用户尝试卸载时,该应用会显示一项活动

enter image description here

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

enter image description here

我的问题是什么

如果在之前已在其设备上安装该应用的用户卸载应用程序之前,如何启动ActivityIntentService

4 个答案:

答案 0 :(得分:2)

正如@CommonsWare所说The techniques used by NQ Mobile Security have been reported to the Android Security group, and they are working on a fix to stop this behavior from occurring.已向Google提出功能请求,希望他们可以听取它。

http://code.google.com/p/android/issues/detail?can=2&q=33315&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&id=33315

答案 1 :(得分:1)

我认为您可以跟踪logcat,其中所有活动,事件,意图都已注册,并在发送Intent时发现卸载此应用程序。

然后你可能会执行一个动作,即启动一个活动,但我不确定这一步。

希望这有帮助!

答案 2 :(得分:1)

我不知道在NQ Mobile Security application

中是怎么发生的

但在一般情况下,我发现它不可能(或者可能,但我找不到方法),

由于,

当您在自己的应用中注册BroadcastReceiver android.intent.action.PACKAGE_REMOVED以及卸载应用时,已卸载注册的BroadcastReceiver,然后卸载应用,因此自己的卸载事件已赢得不会被BroadcastReceiver收到。

答案 3 :(得分:-1)

我知道这已经过时但我想提供这个答案。 聆听自己的卸载非常简单。您只需要使用您执行的二进制文件并在后台运行(使用nohup命令)。

这个二进制文件可以监听PACKAGE_REMOVED广播,也可以定期检查文件是否仍然存在于/ data / app /中(这些文件是世界可读的,目录列表已禁用,但你知道自己的包名:)) 如果第二种解决方案可以在不耗尽电池的情况下完成,我不知道。