Выбор изображений эспрессо - ошибка CursorIndexOutOfBoundsException - PullRequest
1 голос
/ 07 марта 2019

Я разрабатываю тест с 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 строк, не знаю почему.

1 Ответ

0 голосов
/ 08 марта 2019

Решил, установив следующий путь.Без файловых провайдеров и разрешений.

Я получил путь отладки приложения без тестирования и копирования значения.

resultData.setData(Uri.parse("content://media/external/images/media/142583"));
...