React-native-image-crop-picker: Android crash selecting pictures: java.lang.OutOfMemoryError

Created on 12 Sep 2018  路  2Comments  路  Source: ivpusic/react-native-image-crop-picker

Version

  • react-native-image-crop-picker v0.20.3
  • react-native v0.56.0

Platform

  • Android

Expected behaviour

Should not crash :)

Actual behaviour

Crash with Samsung Galaxy XCover4 (xcover4lte), Android 7.0

Steps to reproduce

  1. Get a cheap Android phone
  2. Select multiple photos
  3. Crash

Attachments

java.lang.OutOfMemoryError: 
  at dalvik.system.VMRuntime.newNonMovableArray (Native Method)
  at android.graphics.Bitmap.nativeCreate (Native Method)
  at android.graphics.Bitmap.createBitmap (Bitmap.java:977)
  at android.graphics.Bitmap.createBitmap (Bitmap.java:948)
  at android.graphics.Bitmap.createBitmap (Bitmap.java:879)
  at id.zelory.compressor.ImageUtil.decodeSampledBitmapFromFile (ImageUtil.java:70)
  at id.zelory.compressor.ImageUtil.compressImage (ImageUtil.java:33)
  at id.zelory.compressor.Compressor.compressToFile (Compressor.java:60)
  at com.reactnative.ivpusic.imagepicker.Compression.compressImage (Compression.java:63)
  at com.reactnative.ivpusic.imagepicker.PickerModule.getImage (PickerModule.java:544)
  at com.reactnative.ivpusic.imagepicker.PickerModule.getAsyncSelection (PickerModule.java:447)
  at com.reactnative.ivpusic.imagepicker.PickerModule.imagePickerResult (PickerModule.java:631)
  at com.reactnative.ivpusic.imagepicker.PickerModule.onActivityResult (PickerModule.java:713)
  at com.facebook.react.bridge.ReactContext.onActivityResult (ReactContext.java:253)
  at com.facebook.react.ReactInstanceManager.onActivityResult (ReactInstanceManager.java:692)
  at com.facebook.react.ReactActivityDelegate.onActivityResult (ReactActivityDelegate.java:129)
  at com.facebook.react.ReactActivity.onActivityResult (ReactActivity.java:75)
  at android.app.Activity.dispatchActivityResult (Activity.java:7280)
  at android.app.ActivityThread.deliverResults (ActivityThread.java:4556)
  at android.app.ActivityThread.handleSendResult (ActivityThread.java:4603)
  at android.app.ActivityThread.-wrap22 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1702)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:154)
  at android.app.ActivityThread.main (ActivityThread.java:6836)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)

@ivpusic any idea how we could fix that? Would like to help.

All 2 comments

me too

I fixed this by asking the permissions on Android and iOS (using react-native-permissions lib):

useEffect(() => {
    async function askPermissions() {
        if (Platform.OS === 'android') {
            await Permissions.requestMultiple([
                'android.permission.CAMERA',
                'android.permission.WRITE_EXTERNAL_STORAGE',
            ]);
        }

        if (Platform.OS === 'ios') {
            await Permissions.requestMultiple(['ios.permission.CAMERA', 'ios.permission.PHOTO_LIBRARY']);
        }
    }

    askPermissions();
}, []);
Was this page helpful?
0 / 5 - 0 ratings

Related issues

leelandclay picture leelandclay  路  3Comments

fmcruz picture fmcruz  路  3Comments

co-de picture co-de  路  3Comments

zhangjunhou picture zhangjunhou  路  3Comments

phantom1299 picture phantom1299  路  3Comments