ParkSangGwon / TedImagePicker

TedImagePicker is simple/beautiful/smart image picker
526 stars 97 forks source link

Click on Camera Tile throw Security Exception #46

Open ibnekhan opened 3 years ago

ibnekhan commented 3 years ago

First time only ask permissions for storage to show images and when click on camera tile it doesn't ask about camera permissions and crash with security permission exception.

I've inserted all permissions into manifest. API LEVEL 29

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gun0912.tedonactivityresult.ProxyActivity}: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 cmp=com.android.camera2/com.android.camera.CaptureActivity clip={text/uri-list U:content://media/external/images/media/42} (has extras) } from ProcessRecord{70f28f2 2912:/u0a169} (pid=2912, uid=10169) with revoked permission android.permission.CAMERA

USAGE

 TedImagePicker.with(CreateAdPost.this).image().showCameraTile(true)
                    .selectedUri(galleryPaths).startMultiImage(new OnMultiSelectedListener() {
                @Override
                public void onSelected(@NotNull List<? extends Uri> list) {

                }
            });
og721 commented 3 years ago

I had same issue and solved by adding camera permission code.

First, need camera permission code inside MANIFEST file.

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-feature
        android:name="android.hardware.camera"
        android:required="true" />

Then, before using TedImagePicker, check CAMERA permission is not denied. (I used TedPermission library)

if ( hasPermission(this, Manifest.permission.CAMERA)) {
                TedImagePicker.with(this)
                    .startMultiImage { uriList ->

                    }
            } else {
                TedPermission.with(this)
                    .setPermissionListener(object: PermissionListener {
                        override fun onPermissionGranted() {
                            TedImagePicker.with(this@MainActivity)
                                .startMultiImage { uriList ->

                                }
                        }

                        override fun onPermissionDenied(deniedPermissions: MutableList<String>?) {
                            Dlog.e("ON PERMISSION DENIED")
                        }
                    })
                    .setDeniedMessage("PERMISSION DENIED MESSAGE")
                    .setPermissions(Manifest.permission.CAMERA)
                    .check()
            }