I have two applications, A and B.
From A, I'm launching B for a result, using the following code:
Intent fmIntent = getPackageManager().getLaunchIntentForPackage("com.example.B");
fmIntent.putExtra("hello", "world");
startActivityForResult(fmIntent, REQUEST_TEST);
From B, I'm doing the following:
getIntent().putExtra("completed", true);
setResult(RESULT_OK, getIntent());
finish();
If I do the above for an activity within the same app, it works as expected.
However, since its two different apps, I receive an empty intent with no data and an unset result code. How should I edit the above to ensure that one intent is maintained throughout?
Use setFlags(0)
to clean all flags which can be created by getLaunchIntentForPackage
:
Intent fmIntent = getPackageManager().getLaunchIntentForPackage("com.example.B");
fmIntent.setFlags(0);
fmIntent.putExtra("hello", "world");
startActivityForResult(fmIntent, REQUEST_TEST);
The solution is provided in a related question "Android onActivityResult triggered before activity even starts!". Create the intent this way:
Intent myIntent = new Intent();
myIntent.setClassName("com.example.B", "com.example.B.ActivityB");
startActivityForResult(myIntent, 600);
I was facing the same problem and solved this way.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With