Я столкнулся с проблемой, выбрав изображения из галереи с помощью android 5.0. Мой код для начинающего намерения:
private void takePictureFromGallery()
{
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(intent, PICK_FROM_FILE);
}
и здесь функция, вызываемая в методе onActivityResult() для кода запроса PICK_FROM_FILE
private void handleGalleryResult(Intent data)
{
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
// field declaration private String mTmpGalleryPicturePath;
mTmpGalleryPicturePath = cursor.getString(columnIndex);
cursor.close();
// at this point mTmpGalleryPicturePath is null
...
}
Для предыдущих версий, чем 5.0, этот код всегда работает, используя приложение com.android.gallery. Google Photos - это приложение галереи по умолчанию на Android 5.0. Может быть, эта проблема зависит от приложения или является проблемой нового дистрибутива ОС Android?
ИЗМЕНИТЬ
Я понимаю проблему: Google Фото автоматически просматривает содержимое своих резервных копий на облачном сервере. На самом деле попробуйте pratice предложить @maveň, если я отключу каждое подключение к Интернету и после выбора изображения, он не получит результат, декодируя Bitmap из InputStream.
Итак, в этот момент возникает вопрос: есть ли способ в android 5.0 обрабатывать действие Intent.ACTION_PICK, чтобы выбор системы выбирался в галерее изображений локального устройства?