Skip to content

Commit 479ba4a

Browse files
authored
Merge pull request #1208 from bajrangCoder/fix-sdcard-null-issues
handle few edge cases on sdcard plugin
1 parent 95bb2a6 commit 479ba4a

File tree

2 files changed

+55
-39
lines changed

2 files changed

+55
-39
lines changed

package-lock.json

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/plugins/sdcard/src/android/SDcard.java

+53-37
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@ public void initialize(CordovaInterface cordova, CordovaWebView webView) {
6464
this.REQUEST_CODE = this.ACCESS_INTENT;
6565
this.context = cordova.getContext();
6666
this.activity = cordova.getActivity();
67-
this.storageManager =
68-
(StorageManager) this.activity.getSystemService(Context.STORAGE_SERVICE);
67+
this.storageManager = (StorageManager) this.activity.getSystemService(
68+
Context.STORAGE_SERVICE
69+
);
6970
}
7071

7172
public boolean execute(
@@ -308,22 +309,36 @@ public void getStorageAccess(String SDCardUUID, CallbackContext callback) {
308309
public void onActivityResult(int requestCode, int resultCode, Intent data) {
309310
super.onActivityResult(requestCode, resultCode, data);
310311

312+
if (activityResultCallback == null) {
313+
Log.e("SDcard", "activityResultCallback is null");
314+
return;
315+
}
316+
311317
if (data == null) return;
312318

319+
if (resultCode == Activity.RESULT_CANCELED) {
320+
activityResultCallback.error("Operation cancelled");
321+
return;
322+
}
323+
313324
if (requestCode == PICK_FROM_GALLERY) {
314325
if (resultCode == Activity.RESULT_OK) {
315326
Uri uri = data.getData();
316327
if (uri == null) {
317328
activityResultCallback.error("No file selected");
318329
} else {
319-
try {
320-
takePermission(uri);
321-
activityResultCallback.success(uri.toString());
322-
} catch (Exception e) {
323-
activityResultCallback.error("Error taking permission: " + e.getMessage());
324-
}
330+
try {
331+
takePermission(uri);
332+
activityResultCallback.success(uri.toString());
333+
} catch (Exception e) {
334+
activityResultCallback.error(
335+
"Error taking permission: " + e.getMessage()
336+
);
337+
}
325338
}
326-
activityResultCallback.success(uri.toString());
339+
//activityResultCallback.success(uri.toString());
340+
} else {
341+
activityResultCallback.error("Operation cancelled");
327342
}
328343
return;
329344
}
@@ -482,8 +497,8 @@ private void createFile(
482497
String mimeType = URLConnection.guessContentTypeFromName(name);
483498
String ext = FilenameUtils.getExtension(name);
484499

485-
if (mimeType == null && ext != null) mimeType =
486-
"text/" + ext; else mimeType = "text/plain";
500+
if (mimeType == null && ext != null) mimeType = "text/" + ext;
501+
else mimeType = "text/plain";
487502

488503
create(parent, name, mimeType, callback);
489504
}
@@ -512,8 +527,10 @@ public void run() {
512527
srcUri = parent;
513528
parentUri = Uri.parse(srcUri);
514529
docId = DocumentsContract.getTreeDocumentId(parentUri);
515-
parentUri =
516-
DocumentsContract.buildDocumentUriUsingTree(parentUri, docId);
530+
parentUri = DocumentsContract.buildDocumentUriUsingTree(
531+
parentUri,
532+
docId
533+
);
517534
}
518535

519536
ContentResolver contentResolver = context.getContentResolver();
@@ -636,9 +653,8 @@ private void move(String src, String dest, final CallbackContext callback) {
636653
public void run() {
637654
try {
638655
Uri newUri = copy(rootUri, srcId, destId);
639-
if (newUri == null) callback.error(
640-
"Unable to copy " + src
641-
); else {
656+
if (newUri == null) callback.error("Unable to copy " + src);
657+
else {
642658
DocumentsContract.deleteDocument(
643659
contentResolver,
644660
getUri(rootUri, srcId)
@@ -694,15 +710,15 @@ private Uri copy(String root, String srcId, String destId)
694710

695711
if (src.isFile()) {
696712
Uri newUri = copyFile(src, dest);
697-
if (newUri == null) return null; else return newUri;
713+
if (newUri == null) return null;
714+
else return newUri;
698715
} else {
699-
destUri =
700-
DocumentsContract.createDocument(
701-
contentResolver,
702-
destUri,
703-
Document.MIME_TYPE_DIR,
704-
src.getName()
705-
);
716+
destUri = DocumentsContract.createDocument(
717+
contentResolver,
718+
destUri,
719+
Document.MIME_TYPE_DIR,
720+
src.getName()
721+
);
706722
destId = DocumentsContract.getDocumentId(destUri);
707723

708724
Uri childrenUri = DocumentsContract.buildChildDocumentsUriUsingTree(
@@ -754,7 +770,8 @@ private Uri copyFile(DocumentFile src, DocumentFile dest)
754770
is.close();
755771
os.close();
756772

757-
if (src.length() == newFile.length()) return newFile.getUri(); else {
773+
if (src.length() == newFile.length()) return newFile.getUri();
774+
else {
758775
DocumentsContract.deleteDocument(contentResolver, newFileUri);
759776
return null;
760777
}
@@ -783,18 +800,17 @@ public void run() {
783800
Cursor cursor = null;
784801

785802
try {
786-
cursor =
787-
contentResolver.query(
788-
childrenUri,
789-
new String[] {
790-
Document.COLUMN_DOCUMENT_ID,
791-
Document.COLUMN_DISPLAY_NAME,
792-
Document.COLUMN_MIME_TYPE,
793-
},
794-
null,
795-
null,
796-
null
797-
);
803+
cursor = contentResolver.query(
804+
childrenUri,
805+
new String[] {
806+
Document.COLUMN_DOCUMENT_ID,
807+
Document.COLUMN_DISPLAY_NAME,
808+
Document.COLUMN_MIME_TYPE,
809+
},
810+
null,
811+
null,
812+
null
813+
);
798814
} catch (
799815
NullPointerException
800816
| SecurityException

0 commit comments

Comments
 (0)