MarquisLP / World-Scribe

An Android app for fictional world-building
MIT License
41 stars 7 forks source link

App crashes when sending an error log email on some devices #45

Open MarquisLP opened 4 years ago

MarquisLP commented 4 years ago

Stack trace from Play Console:

android.os.FileUriExposedException: 

  at android.os.StrictMode.onFileUriExposed (StrictMode.java:1993)

  at android.net.Uri.checkFileUriExposed (Uri.java:2379)

  at android.content.ClipData.prepareToLeaveProcess (ClipData.java:963)

  at android.content.Intent.prepareToLeaveProcess (Intent.java:10227)

  at android.content.Intent.prepareToLeaveProcess (Intent.java:10233)

  at android.content.Intent.prepareToLeaveProcess (Intent.java:10212)

  at android.app.Instrumentation.execStartActivity (Instrumentation.java:1736)

  at android.app.Activity.startActivityForResult (Activity.java:4594)

  at androidx.fragment.app.FragmentActivity.startActivityForResult (FragmentActivity.java:767)

  at android.app.Activity.startActivityForResult (Activity.java:4552)

  at androidx.fragment.app.FragmentActivity.startActivityForResult (FragmentActivity.java:754)

  at android.app.Activity.startActivity (Activity.java:4917)

  at android.app.Activity.startActivity (Activity.java:4885)

  at com.averi.worldscribe.activities.ArticleListActivity.sendEmail (ArticleListActivity.java:631)

  at com.averi.worldscribe.activities.ArticleListActivity.access$500 (ArticleListActivity.java:61)

  at com.averi.worldscribe.activities.ArticleListActivity$7$1.onClick (ArticleListActivity.java:604)

  at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage (AlertController.java:167)

  at android.os.Handler.dispatchMessage (Handler.java:106)

  at android.os.Looper.loop (Looper.java:215)

  at android.app.ActivityThread.main (ActivityThread.java:6952)

  at java.lang.reflect.Method.invoke (Native Method)

  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493)

  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:870)

This seems to be a problem with how we're accessing the error log file, likely something to do with the transition from File to DocumentFile.

MarquisLP commented 4 years ago

The exception is actually due to us passing a file:// URI for the error log file to the user's email app. we should instead be using FileProvider to convert the file's URI to a content:// URI.