Я пытаюсь получить изображение от Галереи Android через намерение ACTION_SEND. Я установил надлежащие поглощенные фильтры, и Галерея открывает мое приложение. Теперь я хочу знать, как достигнуть данные изображения. Я не могу найти примеры в Интернете того, как это сделано. Я полагаю, что путь находится где-нибудь в intent.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));
Не уверен в намерении ОТПРАВИТЬ, но при обработке возврата из намерений PICK в MediaStore для фотографии это выглядит примерно так:
Uri selectedImage = intent.getData();
AssetFileDescriptor fd = getContentResolver()
.openAssetFileDescriptor(selectedImage, "r");
FileInputStream s = fd.createInputStream();
// your image data processing code here
Однако будьте осторожны - вы можете работать с файлами размером 5+ мегапикселей, что может быть довольно большие (особенно если вы распаковываете их в растровые изображения для обработки), а ваша память довольно ограничена.