Skip to content

Commit 17af859

Browse files
committed
fix: fixed #180 修复Android偶现拍照结束空指针导致的应用重启问题
1 parent 34182de commit 17af859

File tree

1 file changed

+38
-34
lines changed

1 file changed

+38
-34
lines changed

android/src/main/java/com/syanpicker/RNSyanImagePickerModule.java

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -338,51 +338,55 @@ public void run() {
338338

339339
private void onGetVideoResult(Intent data) {
340340
List<LocalMedia> mVideoSelectList = PictureSelector.obtainMultipleResult(data);
341-
boolean isRecordSelected = cameraOptions.getBoolean("isRecordSelected");
342-
if (!mVideoSelectList.isEmpty() && isRecordSelected) {
343-
selectList = mVideoSelectList;
344-
}
345-
WritableArray videoList = new WritableNativeArray();
341+
if (cameraOptions != null) {
342+
boolean isRecordSelected = cameraOptions.getBoolean("isRecordSelected");
343+
if (!mVideoSelectList.isEmpty() && isRecordSelected) {
344+
selectList = mVideoSelectList;
345+
}
346+
WritableArray videoList = new WritableNativeArray();
347+
348+
for (LocalMedia media : mVideoSelectList) {
349+
if (TextUtils.isEmpty(media.getPath())) {
350+
continue;
351+
}
346352

347-
for (LocalMedia media : mVideoSelectList) {
348-
if (TextUtils.isEmpty(media.getPath())) {
349-
continue;
353+
WritableMap videoMap = new WritableNativeMap();
354+
355+
Boolean isAndroidQ = SdkVersionUtils.checkedAndroid_Q();
356+
String filePath = isAndroidQ ? media.getAndroidQToPath() : media.getPath();
357+
358+
videoMap.putString("uri", "file://" + filePath);
359+
videoMap.putString("coverUri", "file://" + this.getVideoCover(filePath));
360+
videoMap.putString("fileName", new File(media.getPath()).getName());
361+
videoMap.putDouble("size", new File(media.getPath()).length());
362+
videoMap.putDouble("duration", media.getDuration() / 1000.00);
363+
videoMap.putInt("width", media.getWidth());
364+
videoMap.putInt("height", media.getHeight());
365+
videoMap.putString("type", "video");
366+
videoMap.putString("mime", media.getMimeType());
367+
videoList.pushMap(videoMap);
350368
}
351369

352-
WritableMap videoMap = new WritableNativeMap();
353-
354-
Boolean isAndroidQ = SdkVersionUtils.checkedAndroid_Q();
355-
String filePath = isAndroidQ ? media.getAndroidQToPath() : media.getPath();
356-
357-
videoMap.putString("uri", "file://" + filePath);
358-
videoMap.putString("coverUri", "file://" + this.getVideoCover(filePath));
359-
videoMap.putString("fileName", new File(media.getPath()).getName());
360-
videoMap.putDouble("size", new File(media.getPath()).length());
361-
videoMap.putDouble("duration", media.getDuration() / 1000.00);
362-
videoMap.putInt("width", media.getWidth());
363-
videoMap.putInt("height", media.getHeight());
364-
videoMap.putString("type", "video");
365-
videoMap.putString("mime", media.getMimeType());
366-
videoList.pushMap(videoMap);
370+
invokeSuccessWithResult(videoList);
367371
}
368-
369-
invokeSuccessWithResult(videoList);
370372
}
371373

372374
private void onGetResult(Intent data) {
373375
List<LocalMedia> tmpSelectList = PictureSelector.obtainMultipleResult(data);
374-
boolean isRecordSelected = cameraOptions.getBoolean("isRecordSelected");
375-
if (!tmpSelectList.isEmpty() && isRecordSelected) {
376-
selectList = tmpSelectList;
377-
}
376+
if (cameraOptions != null) {
377+
boolean isRecordSelected = cameraOptions.getBoolean("isRecordSelected");
378+
if (!tmpSelectList.isEmpty() && isRecordSelected) {
379+
selectList = tmpSelectList;
380+
}
378381

379-
WritableArray imageList = new WritableNativeArray();
380-
boolean enableBase64 = cameraOptions.getBoolean("enableBase64");
382+
WritableArray imageList = new WritableNativeArray();
383+
boolean enableBase64 = cameraOptions.getBoolean("enableBase64");
381384

382-
for (LocalMedia media : tmpSelectList) {
383-
imageList.pushMap(getImageResult(media, enableBase64));
385+
for (LocalMedia media : tmpSelectList) {
386+
imageList.pushMap(getImageResult(media, enableBase64));
387+
}
388+
invokeSuccessWithResult(imageList);
384389
}
385-
invokeSuccessWithResult(imageList);
386390
}
387391

388392
private WritableMap getImageResult(LocalMedia media, Boolean enableBase64) {

0 commit comments

Comments
 (0)