Android - startActivityForResult immediately triggering onActivityResult
Solution 1:
You can't use startActivityForResult()
if your activity is being launched as a singleInstance
or singleTask
. standard
or singleTop
launch mode will fix the problem.
Solution 2:
Additionally make sure the intent does not have the Intent.FLAG_ACTIVITY_NEW_TASK
set.
From the docs:
This flag can not be used when the caller is requesting a result from the activity being launched.
Solution 3:
I have seen this behavior before, please make sure your destnation activity (that special activity) is not singleInstance
in AndroidManifest file. If the Activity is singleInstance
, then it will return RESULT_CANCELED
before launched!
Solution 4:
I'd also like to add that you could call an external app with:Intent in = caller.getPackageManager().getLaunchIntentForPackage("com.your.package.here");
Which would create an intent with Intent.FLAG_ACTIVITY_NEW_TASK
added by default, so call:in.setFlags(0);
Which will clear that flag, and then you can proceed to: startActivityForResult(in, action);
Reason I'm doing this is that I have a utility app that has common functionality between a few other apps and I can keep the code changes to one location instead of worrying about multiple updates.