2010-01-24 19 views

risposta

47

Non è possibile farlo: non è possibile avviare automaticamente il servizio semplicemente perché è stato installato.

L'applicazione deve essere prima richiamata dall'utente tramite una sorta di attività. In alternativa, è necessario collegarsi ad alcune trasmissioni rilevanti Intent tramite il manifest, in modo da poter ottenere il controllo quando si verifica uno di quegli eventi e dare il via al servizio in quel modo. In alternativa, dovrai chiedere all'utente di riavviarsi in modo che il tuo filtro Intent possa ottenere il controllo.

+0

Grazie, ho il sospetto che potrebbe essere il caso. Sembra un po 'di supervisione dato quanto è ben pensato il sistema operativo in generale. –

+0

È una cosa di sicurezza, per quanto ho capito. Non è sicuramente una svista, in quanto il team principale di Android ha commentato questa richiesta più volte in passato. – CommonsWare

+4

Sì, è intenzionale. L'installazione dell'applicazione avviene automaticamente in background quando l'app viene scaricata. Preferiamo che nessun codice app venga eseguito finché l'utente non si reca esplicitamente sull'app la prima volta. (E per favore non chiedere all'utente di riavviare il loro dispositivo.) Non è necessario. Esegui l'app e esegui l'inizializzazione al primo avvio.) – hackbod

9

C'è stato un buco - l'SDK di Android Analytics utilizzato per inviare un tentativo subito dopo l'installazione - ma che è stato chiuso (producendo molta confusione, ovviamente).

Ma la risposta definitiva, credo, è qui:

http://developer.android.com/about/versions/android-3.1.html#launchcontrols

Questo sembra suggerire che, a partire dal 3.1, Google ha preso la decisione che le applicazioni sono in uno stato di arresto fino a quando l'utente attiva in modo esplicito loro, ad es lanciando app o posizionando il widget.

Ciò significa che la strategia di ascolto di una trasmissione comune (ad esempio per far sì che l'app venga avviata di nascosto) non funzionerà.

Problemi correlati