【问题标题】:How to start an Activity or Service before an App application is uninstalled by the User?如何在用户卸载 App 应用程序之前启动 Activity 或 Service?
【发布时间】:2012-06-19 05:43:06
【问题描述】:

为什么又问同样的问题

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

应用在做什么

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

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

我的问题是什么

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

【问题讨论】:

  • 我认为您的要求不清楚。您如何启动卸载过程?来自系统应用管理活动?
  • @user370305 我只有一个应用程序,第二个应用程序来自哪里!!
  • NQ Mobile Security 使用的技术已报告给 Android 安全小组,他们正在努力修复以阻止此行为的发生。
  • @CommonsWare :)...我不是这个意思...我以为您在 Android 安全组groups.google.com/forum/?fromgroups#!forum/… 提出了问题。我也觉得应该有一些方法让应用程序从他们的服务器中删除注册用户。真令人失望,Android 中不存在这样的功能。
  • @CommonsWare 我应该提出一份功能报告。您能否随时了解 Android 安全小组采取的任何措施?

标签: android


【解决方案1】:

正如@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

【讨论】:

  • 我认为这甚至不会被 Google 回答...如果您允许在卸载应用程序之前调用活动,这可能会允许应用程序创建一个循环以防止自身被删除...而且,在应用程序被删除(并且不再存在文件)后,您如何调用和活动?
【解决方案2】:

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

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

希望这会有所帮助!

【讨论】:

  • 如果你打开了 Eclipse 并连接了手机,你可以在 Logcat 中看到所有与手机操作相关的日志。因此,当您通过设置卸载应用程序时,会发送一个 Intent 以执行此操作。可以读取 logcat 并在触发此 Intent 时识别事件并执行操作。希望现在更清楚..
  • 我已按照您的建议添加了 Logcat,现在很明显该应用正在显示活动。你能弄清楚发生了什么吗?
【解决方案3】:

不知道NQ Mobile Security application是怎么回事,

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

因为,

当您在自己的应用程序中注册BroadcastReceiverandroid.intent.action.PACKAGE_REMOVED时,当应用程序被卸载时,注册的BroadcastReceiver在应用程序被卸载之前已经被卸载,因此它不会收到它自己的卸载事件BroadcastReceiver

【讨论】:

  • 即使它可以由一个应用程序完成,这意味着它可以完成,我们应该谦虚地接受我们不知道!
  • 只需检查应用程序卸载过程。它是如何进行的......首先删除了哪个组件,或者任何目录或文件,
  • 只需浏览卸载应用程序的源代码即可。我也会调查的。
  • 这个需要试一试。我能想到的一件事是卸载应用程序时。所有的服务也随之销毁。
【解决方案4】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 2023-03-20
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2014-03-12
    相关资源
    最近更新 更多