2013-04-25 14 views
5

Mam dwie aplikacje, A i B.android - rozpoczęcie działalności innej aplikacji, aby dostać to wynik

Od A ja uruchomienie B dla wyniku, stosując następujący kod:

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

od B, robię, co następuje:

Gdybym wykonaj powyższe działania w ramach tej samej aplikacji, to działa zgodnie z oczekiwaniami.

Jednak od dwóch różnych aplikacji otrzymuję pustą intencję bez danych i nieuzbrojonego kodu wynikowego. Jak powinienem edytować powyższe, aby upewnić się, że zachowano jedno zamierzenie?

+0

Czy po instrukcji tutaj: http://developer.android.com/training/basics/intents/filters.html? – britzl

+0

Co sprawia, że ​​myślisz, że 'getLaunchIntentForPackage()' kiedykolwiek zwróci coś odpowiedniego do użycia przez 'startActivityForResult()'? – CommonsWare

+0

Po prostu zgaduję, że tak. – judepereira

Odpowiedz

3

Rozwiązanie przedstawiono w powiązanym pytaniu "Android onActivityResult triggered before activity even starts!". Stwórz intencję w ten sposób:

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

Miałem do czynienia z tym samym problemem i rozwiązany w ten sposób.

+0

dziękuję bardzo! –

0

Zastosowanie setFlags(0) oczyścić wszystkie flagi, które mogą być utworzone przez getLaunchIntentForPackage:

Intent fmIntent = getPackageManager().getLaunchIntentForPackage("com.example.B"); 
fmIntent.setFlags(0); 
fmIntent.putExtra("hello", "world"); 
startActivityForResult(fmIntent, REQUEST_TEST); 
Powiązane problemy