10

Per avviare un servizio, utilizzo un AlarmManager. Quando ho impostato il AlarmManager io uso il PendingIntent e utilizzare un codice di richiesta univoco che è uguale a una riga id nel mio database.PendingIntent get requestCode

PendingIntent pendingIntent = PendingIntent.getBroadcast(SettingsActivity.this, 
          lecture.getId(), myIntent, 0); 

Come posso recuperare quell'ID nel mio servizio quando viene avviato? Fondamentalmente ho bisogno solo del parametro requestCode. Voglio usare quell'ID per recuperare i dati dal mio database e mostrarli in una notifica. Ho implementato tutte le cose, ho solo bisogno di quel requestCode. È possibile averlo?

Grazie

risposta

14

è necessario mettere in lecture.getId() extra del vostro myIntent. Secondo Javadoc requestCode non è ancora stato utilizzato.

// store id 
myIntent.putExtra("id", lecture.getId()); 

// read id or -1, if there is no such extra in intent 
int id = myIntent.getIntExtra("id", -1); 
+0

Ma ho bisogno di quell'ID anche quando l'app viene uccisa. Quando un'app viene uccisa, i dati aggiuntivi vengono eliminati. Come posso ottenere i dati necessari dal database sul servizio quando l'id negli extra sarà nullo? O mi sbaglio? – Aksiom

+1

@Aksiom il 'PendingIntent' quando viene licenziato avrà l'extra, non ha nulla a che fare con il processo di essere ucciso,' PendingIntent' è una sorta di intent che funziona indipendentemente dall'app, anche se la tua app non è in esecuzione !! –

+0

@Aksiom ma quando il dispositivo viene avviato (riavviato) 'PendingIntent' verrà rimosso così ** all'avvio ** devi registrare nuovamente il' PendingIntent' con 'AlarmManager' –

Problemi correlati