Получение намерения ACTION_SEND из галереи

Я пытаюсь получить изображение из галереи Android через намерение ACTION_SEND. Я установил соответствующие фильтры намерений, и Галерея открывает мое приложение. Теперь я хочу знать, как получить данные изображения. Я не могу найти примеров в Интернете, как это делается. Я полагаю, что путь находится где-то в aim.getData (), но как именно я вытаскиваю это изображение из галереи?

Обнаружено это в источнике Picasa. Он дает правильный путь изображения.

Intent intent = getIntent(); if (Intent.ACTION_SEND.equals(intent.getAction())) { Bundle extras = intent.getExtras(); if (extras.containsKey(Intent.EXTRA_STREAM)) { Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM); String scheme = uri.getScheme(); if (scheme.equals("content")) { String mimeType = intent.getType(); ContentResolver contentResolver = getContentResolver(); Cursor cursor = contentResolver.query(uri, null, null, null, null); cursor.moveToFirst(); String filePath = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA)); 

Не уверен в намерениях SEND, но при обработке возвратов из объектов PICK в MediaStore для фотографии это выглядит примерно так:

  Uri selectedImage = intent.getData(); AssetFileDescriptor fd = getContentResolver() .openAssetFileDescriptor(selectedImage, "r"); FileInputStream s = fd.createInputStream(); // your image data processing code here 

Однако будьте осторожны – вы можете работать с 5+ мегапиксельными файлами, которые могут быть довольно большими (особенно, если вы разжимаете их на растровые изображения для обработки), и ваша память довольно ограничена.