2013-04-16 34 views
5

Ho seguente codiceIntent sempre nullo onStartCommand

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    if(intent != null) { 
     Log.i("INTENT", intent.getAction().toString()); 
    } 
    return START_STICKY; 
} 

ma restituisce sempre NullPointerException on line:

Log.i("INTENT", intent.getAction().toString()); 

Perché? Sto controllando sopra se la variabile "intent" non è nulla. Se questo è il caso, esegui il seguente codice. Ma ho ancora percepito il punto zero.

servizio viene avviato da un'attività del genere:

startService(new Intent(this, MainService.class)); 

Che cosa sto facendo di sbagliato?

+0

Probabilmente getAction() restituisce null. Prova a controllarlo in una stringa. Qualcosa come 'String s = intent.getAction(). ToString();' e controlla se è nullo o no. – Wamasa

+0

Perché ho anche la trasmissione che avvia questo servizio, e vorrei distinguere tra il servizio iniziato in attività o il servizio iniziato con trasmissione. –

+0

@Wamasa ho provato. Restituisce ancora nullpointerexception. Se rimuovo getAction(), il servizio è avviato correttamente. Wtf? –

risposta

12

Si sta ottenendo uno NullPointerException perché intent.getAction() sembra restituire null.

Si dovrebbe estendere il controllo a questo:

if(intent != null && intent.getAction() != null) { 

Se si desidera aggiungere un'azione per il vostro intento è necessario chiamare setAction():

Intent i = new Intent(this, MainService.class); 
i.setAction("foo"); 
startService(i); 
+0

Il tuo uomo. Sta funzionando. Avevo bisogno di estendere il mio controllo "se". –

Problemi correlati