I am launching activities from the main activity in my app using the call startActivityForResult(intent, ACTIVITY_TYPE)
, and they are all working but one.
onActivityResult()
will also pass RESULT_CANCELED
as the resultCode
if you misspell the package or class name in the manifest file.
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.
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.
startActivityForResult()
doesn't work with a singleInstance
or singleTask
activity in pre-lollipop version of Android. Since Android 5 it works (see this answer for more details).
My problem was with the calling activity. Its declaration in the AndroidManifest had the following property:
android:noHistory="true"
Changed it to "false" and now works fine.
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!