17

为什么又是同一个问题

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

应用程序在做什么

该应用程序在用户尝试卸载它时显示一个活动

在此处输入图像描述

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

在此处输入图像描述

我的问题是什么

如何在之前在其设备上安装应用程序的用户卸载应用程序之前启动Activity或启动应用程序?IntentService

4

4 回答 4

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

于 2012-06-24T18:26:58.617 回答
1

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

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

希望这可以帮助!

于 2012-06-16T10:59:50.320 回答
1

我不知道它是怎么发生的NQ Mobile Security application

但在一般情况下,我发现这是不可能的(或者可能有可能但我找不到路),

因为,

当您在自己的应用中注册并卸载应用时,已注册BroadcastReceiver的应用在应用卸载之前已被卸载,因此不会收到自己的卸载事件。android.intent.action.PACKAGE_REMOVEDBroadcastReceiverBroadcastReceiver

于 2012-06-16T11:08:26.087 回答
-1

我知道这很旧,但我想提供这个答案。听你自己的卸载很容易。您只需要使用在后台执行和运行的二进制文件(使用 nohup 命令)。

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

于 2014-01-27T07:58:48.013 回答