Description
Steps to reproduce
- Go to the orbit article.
- Tap the lead image.
- Save the image.
Expected results
Image saves to device like on API 22.
Actual results
Snackbar with the message "An unknown error occurred." is displayed.
Environments observed
App version: 2.1.132-beta-2015-10-23
Android OS versions: API 19
Device model: AOSP Nexus S emulator
Device language: English
Stacktrace
MediaStore E Failed to insert image E java.io.FileNotFoundException: No such file or directory E at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java:146) E at android.content.ContentProviderProxy.openAssetFile(ContentProviderNative.java:618) E at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:922) E at android.content.ContentResolver.openOutputStream(ContentResolver.java:669) E at android.content.ContentResolver.openOutputStream(ContentResolver.java:645) E at android.provider.MediaStore$Images$Media.insertImage(MediaStore.java:902) E at org.wikipedia.page.gallery.GalleryItemFragment$7.performTask(GalleryItemFragment.java:426) E at org.wikipedia.page.gallery.GalleryItemFragment$7.performTask(GalleryItemFragment.java:423) E at org.wikipedia.concurrency.SaneAsyncTask$BackingAsyncTask.doInBackground(SaneAsyncTask.java:98) E at org.wikipedia.concurrency.SaneAsyncTask$BackingAsyncTask.doInBackground(SaneAsyncTask.java:92) E at android.os.AsyncTask$2.call(AsyncTask.java:288) E at java.util.concurrent.FutureTask.run(FutureTask.java:237) E at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) E at java.util.concurrent.FutureTask.run(FutureTask.java:237) E at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) E at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) E at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) E at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) E at java.lang.Thread.run(Thread.java:841) Task$BackingAsyncTask D doInBackground():100: null D java.lang.RuntimeException: Failed to import image to media collection D at org.wikipedia.page.gallery.GalleryItemFragment$7.performTask(GalleryItemFragment.java:430) D at org.wikipedia.page.gallery.GalleryItemFragment$7.performTask(GalleryItemFragment.java:423) D at org.wikipedia.concurrency.SaneAsyncTask$BackingAsyncTask.doInBackground(SaneAsyncTask.java:98) D at org.wikipedia.concurrency.SaneAsyncTask$BackingAsyncTask.doInBackground(SaneAsyncTask.java:92) D at android.os.AsyncTask$2.call(AsyncTask.java:288) D at java.util.concurrent.FutureTask.run(FutureTask.java:237) D at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) D at java.util.concurrent.FutureTask.run(FutureTask.java:237) D at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) D at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) D at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) D at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) D at java.lang.Thread.run(Thread.java:841)