굳이 ActivityResultContract를 두개 사용해서 처리하면, requestCode가 필요한지는 모르겠지만, 필요하다면 아래처럼 GetContent를 감싸서 처리해볼 수 있을 것 같은데요.
public class GalleryContracts extends ActivityResultContract<String, Uri> {
private ActivityResultContract<String, Uri> delegate = new ActivityResultContracts.GetContent();
private int requestCode;
public GalleryContracts(){
}
@NonNull
@Override
public Intent createIntent(@NonNull Context context, String s) {
return delegate.createIntent(context, s);
}
@Override
public Uri parseResult(int i, @Nullable Intent intent) {
return delegate.parseResult(i, intent);
}
public int getRequestCode() {
return requestCode;
}
public void setRequestCode(int requestCode) {
this.requestCode = requestCode;
}
}
private ActivityResultLauncher<String> mGetContent = registerForActivityResult(new GalleryContracts(),
result -> {
});
((GalleryContracts) mGetContent1.getContract()).setRequestCode(1000);
mGetContent.launch("image/*");