Android - l'applicazione [Xoom/Honeycomb] senza attività di lancio non funziona
-
27-10-2019 - |
Domanda
Ho un'applicazione senza attività di lancio che funziona correttamente da Android 1.5 ad Android 2.3.4. È avviato dal mio ricevitore di trasmissione. Tuttavia, su Honeycomb (Motorola Xoom), il mio ricevitore di trasmissione non funziona affatto (non cattura alcun intenzione). Se aggiungo attività di lancio al mio manifest:
<activity android:label="@string/app_name" android:name="com.myapp.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> </intent-filter>
</activity>
Quindi la mia app funziona correttamente (il ricevitore di trasmissione cattura tutti gli intenti necessari e inizia i miei servizi).
Sarei molto grato per l'aiuto!
Soluzione
Stai eseguendo Honeycomb 3.1 o superiore? Se sì, dai un'occhiata qui. Quando l'applicazione è installata, è nello stato di arresto. Quando l'applicazione viene lanciata per la prima volta, viene spostata dallo stato fermo.
Un'applicazione nello stato di arresto non inizierà da tutti gli intenti di trasmissione. Il mittente dell'intento di trasmissione deve specificare il Intent.flag_include_stopped_packages Flag se vuole avviare anche le applicazioni interrotte.
Intent intent = new Intent(MY_INTENT_ACTION);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
sendBroadcast(intent);
Se non riesci a modificare il codice che invia l'intento, la tua scommessa migliore sarebbe quella di mantenere l'attività di lancio. Ogni volta che l'utente lancia l'applicazione dopo l'installazione, verrà spostato dallo stato interrotto e inizierai a ricevere trasmissioni.
Nota che l'utente può riportare l'applicazione nello stato arrestato da Gestisci applicazioni nelle impostazioni del dispositivo.
Altri suggerimenti
Su Android 3.1 e superiore, BroadcastReceivers
non verrà invocato fino a quando l'utente non avrà avviato l'applicazione almeno una volta con alcuni altri mezzi, come il lancio di un'attività.
Poiché gli utenti tendono a essere molto confusi da applicazioni che non hanno un'attività, in primo luogo avresti dovuto avere un'attività, per aiuto online se non altro. Con Android 3.1, è ancora più importante.