0

I am trying to develop a simple app that scan documents. I am using scanlibrary, provided by jhansireddy (https://github.com/jhansireddy/AndroidScannerDemo). I've integrated the library with my actual project, i had done the gradle build.

When I start the activity, i have the options to select a photo from Gallery, or to take a brand new one. In both case, it crashes when it comes to save in the internal memory (requires android.permission.WRITE_EXTERNAL_STORAGE).

Below I will paste the entire error from logcat.

09-09 10:40:51.219 27738-27738/com.example.cosmin.kdocscanner E/MediaStore: Failed to insert image
java.lang.SecurityException: Permission Denial: writing com.android.providers.media.MediaProvider uri content://media/external/images/media from pid=27738, uid=10158 requires android.permission.WRITE_EXTERNAL_STORAGE, or grantUriPermission()
    at android.os.Parcel.readException(Parcel.java:1599)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:183)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
    at android.content.ContentProviderProxy.insert(ContentProviderNative.java:476)
    at android.content.ContentResolver.insert(ContentResolver.java:1251)
    at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:971)
    at com.scanlibrary.Utils.getUri(Utils.java:23)
    at com.scanlibrary.PickImageFragment.postImagePick(PickImageFragment.java:146)
    at com.scanlibrary.PickImageFragment.onActivityResult(PickImageFragment.java:141)
    at android.app.Activity.dispatchActivityResult(Activity.java:6487)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:3738)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3785)
    at android.app.ActivityThread.access$1400(ActivityThread.java:157)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5525)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

And after this one, another one that I think is a side effect. Meaning that at the point I resolve the first one, it will resolve the other too.

09-09 10:40:51.220 27738-27738/com.example.cosmin.kdocscanner E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.cosmin.kdocscanner, PID: 27738
java.lang.RuntimeException: Failure delivering result ResultInfo{who=android:fragment:0, request=2, result=-1, data=null} to activity {com.example.cosmin.kdocscanner/com.scanlibrary.ScanActivity}: java.lang.NullPointerException: uriString
    at android.app.ActivityThread.deliverResults(ActivityThread.java:3742)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3785)
    at android.app.ActivityThread.access$1400(ActivityThread.java:157)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5525)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
    Caused by: java.lang.NullPointerException: uriString
    at android.net.Uri$StringUri.<init>(Uri.java:475)
    at android.net.Uri$StringUri.<init>(Uri.java:465)
    at android.net.Uri.parse(Uri.java:437)
    at com.scanlibrary.Utils.getUri(Utils.java:24)
    at com.scanlibrary.PickImageFragment.postImagePick(PickImageFragment.java:146)
    at com.scanlibrary.PickImageFragment.onActivityResult(PickImageFragment.java:141)
    at android.app.Activity.dispatchActivityResult(Activity.java:6487)
    at android.app.ActivityThread.deliverResults(ActivityThread.java:3738)
    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3785) 
    at android.app.ActivityThread.access$1400(ActivityThread.java:157) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5525) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

I must say that android manifest has already the permission. In fact, both manifest files (The one that belongs to my project, and the one that belongs to the library).

What can be the cause?!

Shabbir Dhangot
  • 8,954
  • 10
  • 58
  • 80
user3655773
  • 31
  • 1
  • 4
  • NullPointerException thorwn by uriString so check it, for the permission in android 6.0 you must check it at runtime, read my answer http://stackoverflow.com/questions/39397885/mkdir-fails-with-sd-card-although-there-is-permission/39397970#39397970 – Michele Lacorte Sep 09 '16 at 07:51
  • Yea, i figured that out. But i do not know exactly if I can check it thorugh my project or to modify the provided library ... – user3655773 Sep 13 '16 at 13:53

0 Answers0