@@ -72,14 +72,22 @@ public RNDocumentPickerModule(ReactApplicationContext reactContext) {
7272 private final ActivityEventListener activityEventListener = new BaseActivityEventListener () {
7373 @ Override
7474 public void onActivityResult (Activity activity , int requestCode , int resultCode , Intent data ) {
75+ boolean isForeignResult = requestCode != READ_REQUEST_CODE && requestCode != PICK_DIR_REQUEST_CODE ;
76+ if (isForeignResult ) {
77+ return ;
78+ }
7579 final Promise storedPromise = promise ;
7680 if (storedPromise == null ) {
7781 Log .e (NAME , "promise was null in onActivityResult" );
7882 return ;
7983 }
84+ if (resultCode == Activity .RESULT_CANCELED ) {
85+ sendError (E_DOCUMENT_PICKER_CANCELED , "User canceled directory picker" );
86+ return ;
87+ }
8088 if (requestCode == READ_REQUEST_CODE ) {
8189 onShowActivityResult (resultCode , data , storedPromise );
82- } else if ( requestCode == PICK_DIR_REQUEST_CODE ) {
90+ } else {
8391 onPickDirectoryResult (resultCode , data );
8492 }
8593 }
@@ -96,8 +104,8 @@ private String[] readableArrayToStringArray(ReadableArray readableArray) {
96104
97105 @ Override
98106 public void onCatalystInstanceDestroy () {
99- super .onCatalystInstanceDestroy ();
100107 getReactApplicationContext ().removeActivityEventListener (activityEventListener );
108+ super .onCatalystInstanceDestroy ();
101109 }
102110
103111 @ NonNull
@@ -170,10 +178,7 @@ public void releaseSecureAccess(ReadableArray uris, Promise promise) {
170178 }
171179
172180 private void onPickDirectoryResult (int resultCode , Intent data ) {
173- if (resultCode == Activity .RESULT_CANCELED ) {
174- sendError (E_DOCUMENT_PICKER_CANCELED , "User canceled directory picker" );
175- return ;
176- } else if (resultCode != Activity .RESULT_OK ) {
181+ if (resultCode != Activity .RESULT_OK ) {
177182 sendError (E_UNKNOWN_ACTIVITY_RESULT , "Unknown activity result: " + resultCode );
178183 return ;
179184 }
@@ -190,39 +195,37 @@ private void onPickDirectoryResult(int resultCode, Intent data) {
190195 }
191196
192197 public void onShowActivityResult (int resultCode , Intent data , Promise promise ) {
193- if (resultCode == Activity .RESULT_CANCELED ) {
194- sendError (E_DOCUMENT_PICKER_CANCELED , "User canceled document picker" );
195- } else if (resultCode == Activity .RESULT_OK ) {
196- Uri uri = null ;
197- ClipData clipData = null ;
198-
199- if (data != null ) {
200- uri = data .getData ();
201- clipData = data .getClipData ();
202- }
198+ if (resultCode != Activity .RESULT_OK ) {
199+ sendError (E_UNKNOWN_ACTIVITY_RESULT , "Unknown activity result: " + resultCode );
200+ return ;
201+ }
202+ Uri uri = null ;
203+ ClipData clipData = null ;
203204
204- try {
205- List <Uri > uris = new ArrayList <>();
206- // condition order seems to matter: https://github.com/rnmods/react-native-document-picker/issues/317#issuecomment-645222635
207- if (clipData != null && clipData .getItemCount () > 0 ) {
208- final int length = clipData .getItemCount ();
209- for (int i = 0 ; i < length ; ++i ) {
210- ClipData .Item item = clipData .getItemAt (i );
211- uris .add (item .getUri ());
212- }
213- } else if (uri != null ) {
214- uris .add (uri );
215- } else {
216- sendError (E_INVALID_DATA_RETURNED , "Invalid data returned by intent" );
217- return ;
218- }
205+ if (data != null ) {
206+ uri = data .getData ();
207+ clipData = data .getClipData ();
208+ }
219209
220- new ProcessDataTask (getReactApplicationContext (), uris , copyTo , promise ).execute ();
221- } catch (Exception e ) {
222- sendError (E_UNEXPECTED_EXCEPTION , e .getLocalizedMessage (), e );
210+ try {
211+ List <Uri > uris = new ArrayList <>();
212+ // condition order seems to matter: https://github.com/rnmods/react-native-document-picker/issues/317#issuecomment-645222635
213+ if (clipData != null && clipData .getItemCount () > 0 ) {
214+ final int length = clipData .getItemCount ();
215+ for (int i = 0 ; i < length ; ++i ) {
216+ ClipData .Item item = clipData .getItemAt (i );
217+ uris .add (item .getUri ());
218+ }
219+ } else if (uri != null ) {
220+ uris .add (uri );
221+ } else {
222+ sendError (E_INVALID_DATA_RETURNED , "Invalid data returned by intent" );
223+ return ;
223224 }
224- } else {
225- sendError (E_UNKNOWN_ACTIVITY_RESULT , "Unknown activity result: " + resultCode );
225+
226+ new ProcessDataTask (getReactApplicationContext (), uris , copyTo , promise ).execute ();
227+ } catch (Exception e ) {
228+ sendError (E_UNEXPECTED_EXCEPTION , e .getLocalizedMessage (), e );
226229 }
227230 }
228231
0 commit comments