studio programacion para nivel manejo eventos edición desarrollo desarrollar aprende aplicaciones alto android android-intent android-broadcast

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:

Pero, ¿cómo logra Dolphin Browser recibir un evento "eliminado" e iniciar un navegador como en la imagen adjunta ?

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


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.