shijingsh / react-native-customized-image-picker

iOS/Android image picker with support for camera, video compression, multiple images and cropping
245 stars 59 forks source link

Crash in first time call ImagePicker.openCamera #50

Closed phamxuanlu closed 4 years ago

phamxuanlu commented 6 years ago

In the first time call ImagePicker.openCamera the library will request camera permissions but it crash. both on Android and iOS. here is log on Android. java.lang.RuntimeException: Unable to start activity ComponentInfo{com.testimagepicker/cn.finalteam.rxgalleryfinal.ui.activity.MediaActivity}: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524) at android.app.ActivityThread.access$900(ActivityThread.java:154) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:234) at android.app.ActivityThread.main(ActivityThread.java:5526) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0 at cn.finalteam.rxgalleryfinal.ui.activity.MediaActivity.onRequestPermissionsResult(MediaActivity.java:434) at android.app.Activity.requestPermissions(Activity.java:3857) at android.support.v4.app.ActivityCompat.requestPermissions(ActivityCompat.java:479) at cn.finalteam.rxgalleryfinal.utils.PermissionCheckUtils.checkPermission(PermissionCheckUtils.java:39) at cn.finalteam.rxgalleryfinal.utils.PermissionCheckUtils.checkCameraPermission(PermissionCheckUtils.java:73) at cn.finalteam.rxgalleryfinal.ui.fragment.MediaGridFragment.openCamera(MediaGridFragment.java:673) at cn.finalteam.rxgalleryfinal.ui.fragment.MediaGridFragment.openCameraOnStart(MediaGridFragment.java:423) at cn.finalteam.rxgalleryfinal.ui.fragment.MediaGridFragment.onFirstTimeLaunched(MediaGridFragment.java:413) at cn.finalteam.rxgalleryfinal.ui.fragment.BaseFragment.onActivityCreated(BaseFragment.java:158) at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:2270) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1442) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:792) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239) at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3231) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3181) at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:192) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:572) at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:177) at cn.finalteam.rxgalleryfinal.ui.activity.BaseActivity.onStart(BaseActivity.java:65) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1238) at android.app.Activity.performStart(Activity.java:6302) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2427)

this is my configs ` `` compileSdkVersion 27 buildToolsVersion "27.0.0"

defaultConfig {
    applicationId "com.testimagepicker"
    minSdkVersion 16
     targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }
}
clufter commented 6 years ago

and do these as follows in image line 263 and 387 untitled

hope these works

phamxuanlu commented 6 years ago

Thank @devdeepakrathod . I think that is a bug of rxgalleryfinal library. My solution is request camera and storage permissions manual before call openCamera on Android. I use react native PermissionAndroid component to request these permissions.

clufter commented 6 years ago

Hi brother can you give me some idea how to develop AR in react native android , I actually want to render Snapchat like filters. Waiting for you correspondence, Deepak rathod

On 27 Jun 2018 6:49 am, "Lữ" notifications@github.com wrote:

Thank @devdeepakrathod https://github.com/devdeepakrathod . I think that is a bug of rxgalleryfinal library. My solution is request camera and storage permissions manual before call openCamera on Android. I use react native PermissionAndroid component to request these permissions.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/mg365/react-native-customized-image-picker/issues/50#issuecomment-400512424, or mute the thread https://github.com/notifications/unsubscribe-auth/Amjjr6Q1rPdPbiIRyv_Qv4I4yvlWovekks5uAt2igaJpZM4UtsZi .

liukefu2050 commented 6 years ago

in AndroidManifest.xml add follow:

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
phamxuanlu commented 6 years ago

@liukefu2050 I've already add those permissions. It's only crash in first open. After allow runtime permission, second time open it work normally.

nicolasesprit commented 5 years ago

Same problem for me. Already added those permissions, but crash :

java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=23792, uid=10450 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()

cn.finalteam.rxgalleryfinal.ui.fragment.MediaGridFragment.openCamera MediaGridFragment.java:694 cn.finalteam.rxgalleryfinal.ui.fragment.MediaGridFragment.openCameraOnStart MediaGridFragment.java:423 cn.finalteam.rxgalleryfinal.ui.fragment.MediaGridFragment.onFirstTimeLaunched MediaGridFragment.java:413 cn.finalteam.rxgalleryfinal.ui.fragment.BaseFragment.onActivityCreated BaseFragment.java:158

Thank you

rohit75 commented 4 years ago

Any workaround on this?

YMalikk commented 2 years ago

This package crash on Android 11 , i resolve this problem by : Adding imageLoader: 'UNIVERSAL' to openPicker params