Я пытаюсь загрузить изображение в своей деятельности из DCIM. Я использую следующий код:Странное поведение при попытке получить изображение из DCIM
int BROWSE_PICTURES = 0;
public void openBrowsePictures() {
Intent i = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, BROWSE_PICTURES);
}
и в onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == BROWSE_PICTURES && resultCode == RESULT_OK && null != data) { // we have bitmap from filesystem!
Uri selectedImage = data.getData();
Log.d("CAMERA","____"+selectedImage.toString());
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(
selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
Log.d("CAMERA", " column : " + columnIndex);
String filePath = cursor.getString(columnIndex);
cursor.close();
Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
Log.d("CAMERA", "----" + filePath);
}
}
Ситуация становится странно, когда я пытаюсь загрузить сфотографировались из файловой системы. Он работает как и ожидалось, когда a. Я выбираю картинку из файла EasyScreenshot, но когда b. Я выбираю картинку из DCIM/Camera path, она не работает. Если я запустил код Log.d на a. случай печатает:
КАМЕРЫ: ____content: // медиа/внешний/изображений/медиа/27487
и второй Log.d:
КАМЕРЫ: ----/хранение/эмулировать/0/Фотографии/Скриншоты/Screenshot_2014-12-18-15-14-22.png
, но, в случае, если б он печатает следующее:
первый log.d:
КАМЕРЫ: ____content: //com.google.android.apps.photos.content/0/https%3A%2F%2Flh5.googleusercontent.com%2F7tUacBA_4oYS2Q8CmkINWHa93B_n7heNyt3OyVZgkY8%3Ds0 -d
и второй log.d:
КАМЕРЫ: ---- нуль
Я протестировать приложение на устройстве Nexus 4 работает Android 5.0.1
Спасибо заранее
В чем разница между этими двумя переменными, которые вы использовали «selectedImage» и «mediaUri»? Благодарю. – issathink
@issathink На самом деле я отредактировал свой код, чтобы соответствовать именам переменных OP, но пропустил одно использование. Спасибо, что указали это. – matiash
Не могу поверить, что это не указано нигде в документах или образцах ... – RominaV