Android - startActivityForResult immediately triggering onActivityResult

前端 未结 13 1118
感情败类
感情败类 2020-11-27 10:54

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.

相关标签:
13条回答
  • 2020-11-27 11:20

    onActivityResult() will also pass RESULT_CANCELED as the resultCode if you misspell the package or class name in the manifest file.

    0 讨论(0)
  • 2020-11-27 11:22

    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.

    0 讨论(0)
  • 2020-11-27 11:27

    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.

    0 讨论(0)
  • 2020-11-27 11:27

    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).

    0 讨论(0)
  • 2020-11-27 11:28

    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.

    0 讨论(0)
  • 2020-11-27 11:29

    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!

    0 讨论(0)
提交回复
热议问题