2013-04-25 6 views
5

Ho due applicazioni, A e B.Android - lanciare un'attività di un'altra app per farlo è risultato

Da A, Sto lanciando B per un risultato, utilizzando il seguente codice:

Intent fmIntent = getPackageManager().getLaunchIntentForPackage("com.example.B"); 
fmIntent.putExtra("hello", "world"); 
startActivityForResult(fmIntent, REQUEST_TEST); 

Da B, sto facendo la seguente:

Se lo faccio quanto sopra per un'attività all'interno della stessa applicazione, che funziona come previsto.

Tuttavia, poiché le sue due app diverse, ricevo un intento vuoto senza dati e un codice di risultato non impostato. Come dovrei modificare quanto sopra per garantire che un intento venga mantenuto per tutto il tempo?

+0

Sono state seguite qui la guida: http://developer.android.com/training/basics/intents/filters.html? – britzl

+0

Cosa ti fa pensare che 'getLaunchIntentForPackage()' possa mai restituire qualcosa di adatto all'uso di 'startActivityForResult()'? – CommonsWare

+0

Ho solo immaginato che sarebbe successo. – judepereira

risposta

3

La soluzione viene fornita in una domanda correlata "Android onActivityResult triggered before activity even starts!". Creare l'intento in questo modo:

Intent myIntent = new Intent(); 
myIntent.setClassName("com.example.B", "com.example.B.ActivityB"); 
startActivityForResult(myIntent, 600); 

Ero di fronte allo stesso problema e risolto in questo modo.

+0

grazie mille! –

0

Usa setFlags(0) per pulire tutte le bandiere che può essere creato da getLaunchIntentForPackage:

Intent fmIntent = getPackageManager().getLaunchIntentForPackage("com.example.B"); 
fmIntent.setFlags(0); 
fmIntent.putExtra("hello", "world"); 
startActivityForResult(fmIntent, REQUEST_TEST); 
Problemi correlati