Écouter l'événement de désinstallation d'une application propre sur Android
Autant que je sache, les applications ne peuvent pas obtenir les intentions de leur propre désinstallation:
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<s=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
source d'informationauteur NitZRobotKoder
Vous devez vous connecter pour publier un commentaire.
Ici est une façon vous pouvez obtenir de l'événement de désinstallation de votre propre application.
À l'aide de
inotify
en code natif.Par exemple: Vous pouvez à l'aide de
inotify_add_watch
pour surveiller l'application des données du dossier de cache comme:/data/data/your-package-name/cache
.Lorsque votre application est désinstallée, vous pouvez obtenir le dossier de supprimer l'événement.
Un autre point clé est que
inotify
doit s'exécuter dans un autre processus à partir de votre propre application.Vous pouvez appeler
fork()
pour ce faire.J'ai déjà vérifié la logique. 🙂
C'est un problème de sécurité dans Andorid, qui est déjà signalé à l'Équipe de Google et fixe dans Android 4.4. Voici mon explication de la façon dont il fonctionne.
Lorsque l'utilisateur accéder à l'application manager dans les réglages du téléphone, et cliquez sur votre application, vous recevez une émission qui contiennent le nom de votre appli dans extras, si l'utilisateur cliquez sur désinstaller btn, le
com.android.uninstaller.UnistallerActivity
doit être lancée.Si vous obtenez une intention et le nom de votre appli dans extras, qui signifie que l'utilisateur a cliqué sur votre application dans "gestionnaire d'applications", l'utilisation
PackageManager
le démarrage de l'activité de l'observateur et d'obtenir les meilleures visible de l'activité et de son colis, si l'utilisateur cliquez sur désinstaller bouton, vous obtenezUnistallerActivity
comme les meilleurs de l'activité de là, vous pouvez faire apparaître une enquête sur le navigateur web ou faire ce que vous voulez y faire.