22

据我所知,应用程序无法获得自己的卸载意图:

但是Dolphin Browser 是如何管理接收“已删除”事件并启动浏览器的呢?

在此处输入图像描述

ADB:
        10-20 12:37:00.997: D/BackupManagerService(527): Received broadcast Intent { act=android.intent.action.PACKAGE_REMOVED dat=package:mobi.mgeek.TunnyBrowser flg=0x8000010 (has extras) }
    10-20 12:37:00.997: V/BackupManagerService(527): removePackageParticipantsLocked: uid=10112 #1
    10-20 12:37:01.007: D/dalvikvm(527): GC_EXPLICIT freed 2247K, 12% free 20128K/22868K, paused 3ms+10ms, total 212ms
    10-20 12:37:01.107: D/dalvikvm(527): GC_FOR_ALLOC freed 1508K, 15% free 19649K/22868K, paused 60ms, total 60ms
    10-20 12:37:01.137: D/AndroidRuntime(4028): Calling main entry com.android.commands.am.Am
    10-20 12:37:01.137: D/dalvikvm(4028): Note: class Landroid/app/ActivityManagerNative; has 163 unimplemented (abstract) methods
    10-20 12:37:01.147: I/ActivityManager(527): START u0 {act=android.intent.action.VIEW dat=http://survey.dolphin.com/int/uninstall?id=014f4d1981d6f88bb56630e7a3a7550a&pn=mobi.mgeek.TunnyBrowser&v=248&s=ofw&it=1382250136565&ut=1382250127000&m=Nexus 4&os=android&osv=4.3&cc=US&no=40471&lang=en&jk=uninstalled&ft=212&ht=957&ct=0&nt=1&res=768*1184&ifi=1&lts=1&iow=0&iom=0&iospd=0&iogs=0&debug=false&t=1382252820000 flg=0x10000000 cmp=com.android.chrome/com.google.android.apps.chrome.Main} from pid 4028
    10-20 12:37:01.157: D/AndroidRuntime(4028): Shutting down VM
4

3 回答 3

7

这是一种获取您自己应用程序的卸载事件的方法。

在本机代码中使用inotify。例如:您可以使用inotify_add_watch来监视应用程序的数据缓存文件夹,例如:/data/data/your-package-name/cache.
当您的应用程序被卸载时,您可以获得文件夹的删除事件。

另一个关键点是inotify应该在与您自己的应用程序不同的进程中运行。
您可以调用fork()来执行此操作。

我已经验证了逻辑。:)

于 2014-02-27T07:31:26.590 回答
3

这是 Andorid 中的一个安全问题,已向 Google 团队报告并在 Android 4.4 中修复。这是我对它如何工作的解释。

于 2014-02-22T11:29:37.713 回答
-1

当用户在手机设置中进入应用管理器并点击您的应用时,您会收到一个包含您的应用名称的广播,如果用户点击卸载 btn,则com.android.uninstaller.UnistallerActivity必须启动。

如果您在 extras 中获得了一个意图和您的应用程序名称,这意味着用户在“应用程序管理器”中单击了您的应用程序,请使用PackageManager启动一个活动观察器并获取顶部可见活动及其包,如果用户单击卸载按钮您在那里获得UnistallerActivity最高活动,您可以在网络浏览器上弹出调查或在那里做您想做的事情。

于 2014-02-21T19:33:40.857 回答