2013-04-25 6 views
5

Ich habe zwei Anwendungen, A und B.Android - eine Aktivität von einer anderen App starten, um es Ergebnis ist

Von A, ich bin starten B für ein Ergebnis, mit dem folgenden Code:

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

Von B, mache ich folgendes:

Wenn ich die oben für eine Aktivität innerhalb der gleichen App tun, ist es wie erwartet funktioniert.

Allerdings, da seine zwei verschiedenen Anwendungen, ich eine leere Absicht ohne Daten und einen nicht definierten Ergebniscode erhalten. Wie sollte ich das oben beschriebene bearbeiten, um sicherzustellen, dass die gesamte Absicht beibehalten wird?

+0

Haben Sie die Anleitung hier gefolgt: http://developer.android.com/training/basics/intents/filters.html? – britzl

+0

Was lässt Sie denken, dass 'getLaunchIntentForPackage()' jemals etwas zurückgibt, das für 'startActivityForResult()' geeignet ist? – CommonsWare

+0

Ich ging nur davon aus, es zu schätzen. – judepereira

Antwort

3

Die Lösung wird in einer verwandten Frage "Android onActivityResult triggered before activity even starts!" zur Verfügung gestellt. Erstellen Sie die Absicht auf diese Weise:

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

Ich war mit dem gleichen Problem konfrontiert und auf diese Weise gelöst.

+0

vielen dank! –

0

Verwenden setFlags(0) alle Flaggen zu reinigen, die von getLaunchIntentForPackage erstellt werden können:

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