Я разрабатываю тест с Espresso для проверки функции изменения изображения профиля. Я добавил следующие строки в метод @Before в тесте.
Я создаю намерение с изображением Uri, с моим провайдером файлов, чтобы всегда возвращать мое приложение в галерею, чтобы выбрать изображение.
Intent resultData = new Intent();
String filename = "img1.jpg";
String path = "mnt/sdcard/" + filename;
File f = new File(path);
Context context =InstrumentationRegistry.getInstrumentation().getContext();
Uri contentUri = getUriForFile(context, "com.otsuka.ikigai.fileprovider", f);
resultData.setData(contentUri);
Instrumentation.ActivityResult result = new Instrumentation.ActivityResult(Activity.RESULT_OK,resultData);
intending(not(isInternal())).respondWith(result);
Код действия, изменяющего образ пользователя, вызывает следующий метод при получении намерения (я не должен его изменять).
mProfileImage = CommonBitmapUtils.rotate(this, data.getData());
profileEdited = true;
imgUserPhoto.setImageBitmap(mProfileImage);
И я получаю следующую ошибку:
android.database.CursorIndexOutOfBoundsException: индекс 0 запрошен, с размером 0
Вызывается этой строкой в функции поворота класса CommonBitmapUtils:
path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
В курсоре 0 строк, не знаю почему.