在Android上收听自己的应用程序卸载事件

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

  • ACTION_PACKAGE_FULLY_REMOVED
  • ACTION_PACKAGE_REMOVED

但是,海豚浏览器如何设法接收一个“删除”事件,并启动一个浏览器,如所附的图片 ?

在这里输入图像说明

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 

Solutions Collecting From Web of "在Android上收听自己的应用程序卸载事件"

这里有一个方法可以让你自己的应用程序卸载事件。

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

另一个关键点是, inotify应该从你自己的应用程序运行在一个独立的进程。
你可以调用fork()来做到这一点。

我已经validation了逻辑。 🙂

这是Andorid中的一个安全问题,已经向Google Team报告并在Android 4.4中进行了修复。 这是我如何工作的解释 。

当用户转到电话设置中的应用程序pipe理器,并单击您的应用程序时,如果用户单击卸载btn,则会收到包含您的应用程序名称的广播,必须启动com.android.uninstaller.UnistallerActivity

如果你得到一个意图和你的应用程序的名字,这意味着用户在“应用程序pipe理器”点击你的应用程序,使用PackageManager启动一个活动监视器,并获得顶部可见的活动和他的包,如果用户点击卸载button您将UnistallerActivity作为顶级活动,您可以在Web浏览器上popup一个调查问卷,或者在那里做您想做的事情。