2012-06-16 7 views
17

Perché la stessa domanda di nuovoCome avviare un'attività o un servizio prima che un'applicazione venga disinstallata dall'utente?

Questa domanda è stato chiesto circa 100 volte su SO. Lo chiedo di nuovo perché tutte le risposte dicono this is not possible ma almeno una delle app in Market lo sta facendo NQ Mobile Security. Ho iniziato una taglia di 100 punti sulla domanda simile ma non ho avuto abbastanza attenzione. Se la comunità non accetta, rimuoveremo la domanda.

Qual è l'applicazione facendo

L'applicazione mostra un'attività quando l'utente tenta di disinstallarlo

enter image description here

e fa alcune elaborazioni prima di essere disinstallato

enter image description here

Qual è la mia domanda

Come avviare un Activity o un IntentService prima che un'applicazione venga disinstallata dall'utente che ha precedentemente installato l'app sul suo dispositivo?

+0

Non penso sia chiaro cosa stai chiedendo. Come stai iniziando la procedura di disinstallazione? Dall'attività di gestione delle applicazioni di sistema? – Kerry

+0

@ user370305 Ho solo un'applicazione, da dove viene la seconda applicazione !! –

+0

Forse nell'esempio che hai dato sopra hai una disinstallazione Activity? – Kerry

risposta

2

Come @CommonsWare ha detto 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. e ha sollevato una richiesta di funzionalità con Google, si spera che possano ascoltarlo.

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

+1

Penso che a Google non verrà mai data nemmeno una risposta ... se si consente di chiamare un'attività prima che l'app venga disinstallata, questo potrebbe consentire a un'app di creare un ciclo per evitare di essere cancellato ... e, come chiamate e attività dopo che l'app è stata cancellata (e nessun file esiste più)? –

1

Penso che sia possibile tenere traccia di logcat, dove tutte le attività, eventi, intenti sono registrati e trovare quando viene inviato un intent per disinstallare questa app.

Quindi è possibile eseguire un'azione, ovvero avviare un'attività, ma non sono sicuro per questo passaggio.

Spero che questo aiuti!

+0

Scusa, non capisco il tuo punto. –

+0

Se Eclipse è aperto e il telefono è connesso, è possibile visualizzare nel Log Log tutti i registri relativi alle operazioni telefoniche. Pertanto, quando vai su Impostazioni per disinstallare un'app, viene inviata un'Intensione affinché questa azione venga eseguita. È possibile leggere il logcat e quando viene attivato questo intent, identificare l'evento ed eseguire un'azione. Spero che sia più chiaro ora .. –

+0

Ho aggiunto il Logcat come suggerito da voi, ora è chiaro che l'app sta visualizzando un'attività. Riesci a capire cosa sta succedendo? –

1

Io non so come è successo in NQ Mobile Security application,

Ma nel caso generale, ho scoperto che non può (o può essere possibile, ma non riuscivo a trovare la strada),

Perché,

quando ti registri BroadcastReceiver per android.intent.action.PACKAGE_REMOVED nella propria app e quando l'applicazione viene disinstallata, la sede BroadcastReceiver è stato disinstallato prima che l'applicazione viene disinstallata, quindi il suo evento propria disinstallazione non sarà ricevuto dal che BroadcastReceiver.

+2

Anche se può essere fatto da un'applicazione che significa che può essere fatto e dovremmo essere umili ad accettare che non lo sappiamo! –

+0

Basta controllare il processo di disinstallazione dell'applicazione .. Come va ... come prima quale componente rimosso, o qualsiasi directory o file, – user370305

+0

Basta passare attraverso il codice sorgente dell'applicazione di disinstallazione. Lo esaminerò anche io. – user370305

-1

So che questo è vecchio ma voglio fornire questa risposta. Ascoltare sulla propria disinstallazione è abbastanza facile. Hai solo bisogno di usare un binario che esegui e gira in background (con il comando nohup).

Questo file binario può essere ascoltato sulla trasmissione PACKAGE_REMOVED oppure è possibile controllare regolarmente se il file esiste ancora in/data/app/(questi file sono leggibili in tutto il mondo, l'elenco delle directory è disabilitato, ma si conosce il proprio nome del pacchetto :)) Non so se la seconda soluzione può essere fatta senza scaricare la batteria.

Problemi correlati