Android-startActivityForResult가 즉시 onActivityResult를 트리거 함 모두 하나만 작동합니다.

call을 사용하여 앱의 기본 활동에서 활동을 시작 startActivityForResult(intent, ACTIVITY_TYPE)하고 있으며 모두 하나만 작동합니다.

이것은 호출되면 원하는대로 활동을 시작하지만 로그에서 onActivityResult()즉시 트리거되고 있음을 알 수 있습니다 . 활동이 표시되지만 RESULT_CANCELED즉시 (으)로 돌아갑니다 onActivityResult().

나는 그 상호 작용 활동으로, 버튼 통화를 누르십시오 finish(), 그리고 onActivityResult()(분명히 결과가 이미 반환 되었기 때문에)이 시간에 호출되지 않습니다.

누구에게나 이치에 맞습니까? 이 행동을 전에 본 사람이 있습니까?



답변

startActivityForResult()활동이 singleInstance또는 으로 시작된 경우 사용할 수 없습니다 singleTask. standard또는 singleTop시작 모드가 문제를 해결합니다.


답변

또한 의도가 Intent.FLAG_ACTIVITY_NEW_TASK설정되어 있지 않은지 확인하십시오 .

로부터 문서 :

호출자가 활동 시작 결과를 요청하는 경우이 플래그를 사용할 수 없습니다.


답변

전에이 동작을 보았습니다. 대상 활동 (특별 활동)이 singleInstanceAndroidManifest 파일에 없는지 확인하십시오 . Activity가 singleInstance인 경우 RESULT_CANCELED시작하기 전에 반환됩니다 !


답변

또한 외부 앱을 호출하여 다음과 같이 추가 할 수 있다고 덧붙이고 싶습니다. 기본적
Intent in = caller.getPackageManager().getLaunchIntentForPackage("com.your.package.here");
으로 Intent.FLAG_ACTIVITY_NEW_TASK추가 된 의도를 생성 하므로 호출 :
in.setFlags(0);
해당 플래그를 지우고 다음을 진행할 수 있습니다.startActivityForResult(in, action);

내가하고있는 이유는 몇 가지 다른 응용 프로그램 사이에 공통 기능을 가진 유틸리티 응용 프로그램이 있고 여러 업데이트에 대해 걱정하는 대신 코드 변경 사항을 한 위치로 유지할 수 있기 때문입니다.


답변

startActivityForResult()롤리팝 이전 버전의 Android 에서는 singleInstance또는 singleTask활동에서 작동하지 않습니다 . Android 5부터 작동합니다 ( 자세한 내용 은 이 답변 참조).


답변

또한 FLAG_ACTIVITY_NEW_TASK의도 가 있는 경우에도 트리거됩니다 .

Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, REQUEST_CODE);


답변

내 문제는 전화 활동에 관한 것이었다. AndroidManifest에서 선언 한 속성은 다음과 같습니다.

android:noHistory="true"

“false”로 변경했으며 이제는 정상적으로 작동합니다.