2012-06-16 14 views
17

Por qué la misma pregunta otra vez¿Cómo iniciar una actividad o servicio antes de que el usuario desinstale una aplicación de la aplicación?

Esta pregunta se ha formulado unas 100 veces en SO. Lo vuelvo a preguntar porque todas las respuestas dicen this is not possible pero al menos una de las aplicaciones en Market lo está haciendo NQ Mobile Security. Empecé una recompensa de 100 puntos por la pregunta similar, pero no recibió suficiente atención. Si la comunidad no acepta, eliminaré la pregunta.

Cuál es la aplicación haciendo

La aplicación muestra una actividad cuando el usuario intenta desinstalarlo

enter image description here

y hace algún procesamiento antes de que se desinstala

enter image description here

¿Cuál es mi pregunta

¿Cómo iniciar un Activity o un IntentService antes de que un usuario haya desinstalado la aplicación en su dispositivo?

+0

No creo que esté claro lo que estás preguntando. ¿Cómo estás iniciando el proceso de desinstalación? Desde la actividad de gestión de aplicaciones del sistema? – Kerry

+0

@ user370305 Tengo solo una aplicación, ¿de dónde viene la segunda aplicación? –

+0

¿Quizás en el ejemplo que proporcionó anteriormente tienen una Actividad de desinstalación? – Kerry

Respuesta

2

Como @CommonsWare dijo The techniques used by NQ Mobile Security have been reported to the Android Security group, and they are working on a fix to stop this behavior from occurring. y ha planteado una solicitud de función con Google, es de esperar que puedan escucharla.

http://code.google.com/p/android/issues/detail?can=2&q=33315&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars&id=33315

+1

Creo que esto nunca será respondido por Google ... si permites que se llame a una actividad antes de que se desinstale la aplicación, esto podría permitir que una aplicación cree un bucle para evitar que se elimine ... y ¿cómo? ¿Llamas y actividad después de que la aplicación ha sido eliminada (y ya no hay archivos)? –

1

Creo que puede rastrear Logcat, donde se registran todas las actividades, eventos, intenciones y encontrar cuando se envía un Intento para desinstalar esta aplicación.

Entonces podría realizar una acción, es decir, iniciar una actividad, pero no estoy seguro de este paso.

Espero que esto ayude!

+0

Lo siento, no entiendo tu punto. –

+0

Si tiene Eclipse abierto y su teléfono conectado, puede ver en el Logcat todos los registros relacionados con las operaciones del teléfono. Por lo tanto, cuando vaya a Configuración para desinstalar una aplicación, se envía una intención para que se realice esta acción. Es posible leer el logcat y cuando se activa este Intento, identificar el evento y realizar una acción. Espero que esté más claro ahora ... –

+0

He agregado el Logcat como lo sugirió, ahora está claro que la aplicación muestra una actividad. ¿Puedes distinguir algo de lo que está pasando? –

1

No sé cómo sucede en NQ Mobile Security application,

Pero en caso general he encontrado que no es posible (o puede ser posible, pero no pude encontrar el camino),

Porque,

cuando se registra para BroadcastReceiverandroid.intent.action.PACKAGE_REMOVED en su propia aplicación y cuando se desinstala la aplicación, el BroadcastReceiver registrado ha sido desinstalado antes de que la aplicación sea desinstalado, por lo que su evento propio desinstalación no será recibido por esa BroadcastReceiver.

+2

¡Incluso si se puede hacer con una aplicación, eso significa que se puede hacer y debemos ser humildes para aceptar que no sabemos! –

+0

Simplemente verifique el proceso de desinstalación de la aplicación. Cómo funciona ... como, primero, qué componente eliminó, o cualquier directorio o archivo, – user370305

+0

Simplemente vaya a través del código fuente de la aplicación de desinstalación. También lo investigaré. – user370305

-1

Sé que esto es viejo, pero quiero dar esta respuesta. Escuchar tu propia desinstalación es bastante fácil. Solo necesita usar un binario que ejecuta y ejecuta en segundo plano (con el comando nohup).

Este binario puede escuchar en la transmisión PACKAGE_REMOVED o puede verificar regularmente si el archivo todavía existe en/data/app/(estos archivos son legibles, la lista de directorios está deshabilitada, pero usted sabe su propio nombre de paquete :)) No sé si la segunda solución se puede hacer sin agotar la batería.

Cuestiones relacionadas