Escuche su propio evento de desinstalación de aplicaciones en Android
Por lo que sé, las aplicaciones no pueden obtener intenciones para su propia desinstalación:
- ACTION_PACKAGE_FULLY_REMOVED
- ACTION_PACKAGE_REMOVED
¿ Pero cómo Dolphin Browser consigue recibir un evento "eliminado" e iniciar un navegador como en la imagen adjunta ?
- Administrador de alarmas no funciona en segundo plano en Android 6.0
- Cómo desencadenar un evento como iniciar una aplicación cuando se selecciona un texto
- Cómo detectar el estado de sincronización automática cambiado a través del receptor de difusión
- Android.intent.action.BOOT_COMPLETED La intención no se recibe en "Reiniciar" o "Reiniciar"
- ¿Cómo comprobar si Receiver está registrado en Android?
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
- Cual es la diferencia entre sendStickyBroadcast y sendBroadcast en Android
- Uso de RoboSpice en un BroadcastReceiver
- Actualizar la Galería después de eliminar un archivo de imagen?
- Cómo difundir la referencia a la aplicación de Android
- No puede recibir eventos relacionados con la red
- ¿Es bueno reemplazar el receptor de radiodifusión con Greenrobot Eventbus para activar funciones basadas en eventos y la transferencia de datos de servicio a actividad?
- Android ACTION_DATE_CHANGED difusión
- ¿Hay ventajas para cambiar a Otto de Broadcast events
Esta es una forma en la que puedes obtener el evento de desinstalación de tu propia aplicación.
Uso de inotify
en código nativo. Por ejemplo: Puede utilizar inotify_add_watch
para supervisar la carpeta de caché de datos de su aplicación como: /data/data/your-package-name/cache
.
Cuando se desinstale su aplicación, puede obtener el evento de eliminación de la carpeta.
Otro punto clave es que inotify
debe ejecutarse en un proceso separado de su propia aplicación.
Puede invocar fork()
para hacer esto.
Ya he verificado la lógica. 🙂
Este es un problema de seguridad en Andorid, que ya se ha informado al equipo de Google y se ha solucionado en Android 4.4. Aquí está mi explicación de cómo puede funcionar.
Cuando el usuario vaya al administrador de aplicaciones en la configuración del teléfono y haga clic en su aplicación, recibirá una transmisión que contenga el nombre de su aplicación en extras, si el usuario hace clic en desinstalar btn, se debe iniciar la com.android.uninstaller.UnistallerActivity
.
Si obtiene una intención y el nombre de su aplicación en extras, significa que el usuario hizo clic en su aplicación en "administrador de aplicaciones", use PackageManager
para iniciar un observador de actividad y obtener la actividad visible superior y su paquete, si el usuario hace clic en botón de desinstalación usted consigue UnistallerActivity
como actividad superior allí usted puede hacer UnistallerActivity
una encuesta en el web browser o hacer qué usted quiere hacer allí.
- JQuery preventDefault no funciona en el navegador predeterminado de android 4.4
- La elevación no funciona para ImageView