programacion - Escucha la aplicación de desinstalación de eventos en Android.
onclicklistener android studio (3)
Por lo que sé, las aplicaciones no pueden obtener intenciones para su propia desinstalación:
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
Aquí hay una forma en que puede obtener el evento de desinstalación de su propia aplicación.
Usando inotify
en código nativo. Por ejemplo: puede usar inotify_add_watch
para monitorear la carpeta de caché de datos de su aplicación como: /data/data/your-package-name/cache
.
Cuando la aplicación se desinstala, puede obtener el evento de eliminación de la carpeta.
Otro punto clave es que inotify
debe ejecutarse en un proceso separado desde su propia aplicación.
Puedes invocar fork()
para hacer esto.
Ya he verificado la lógica. :)
Cuando el usuario acceda al administrador de aplicaciones en la configuración del teléfono y haga clic en su aplicación, recibirá una transmisión que contiene el nombre de su aplicación en extras. Si el usuario hace clic en desinstalar btn, debe iniciarse com.android.uninstaller.UnistallerActivity
.
Si obtiene un intento y el nombre de su aplicación en extras, eso significa que el usuario hizo clic en su aplicación en el "administrador de aplicaciones", use PackageManager
para iniciar un observador de actividades y obtener la actividad más visible y su paquete, si el usuario hace clic en el botón de desinstalación usted obtiene UnistallerActivity
como actividad principal allí, puede abrir una encuesta en el navegador web o hacer lo que quiera hacer allí.
Este es un problema de seguridad en Andorid, que ya se informó al equipo de Google y se corrigió en Android 4.4. Aquí está mi explanation de cómo puede funcionar.