Intereting Posts
Как импортировать проект андроида в качестве библиотеки и НЕ компилировать его как apk (Android studio 1.0) NoSQL для мобильных приложений? Как использовать команду поиска adb в пакетном режиме Неопределенный горизонтальный ProgressBar НИЖЕ ActionBar с использованием AppCompat? Возобновление активности при нажатии на уведомление Ошибка входа в Facebook на некоторых устройствах Android Studio stale APK для варианта сборки после изменения xml Как отключить все события касания для всех дочерних элементов ViewGroup? NinePatch два текстовых поля с одним изображением Я не понимаю, почему это ClassCastException происходит Данные навигации и сохраненных экземпляров Как получить код страны ISO в приложениях для Android? Изменение цвета значка навигационного ящика в шаблоне по умолчанию для Android Studio Как загрузить многостраничные данные и изображение на сервер в Android? Ошибка: не удалось найти цель с хэш-строкой 'android-14' в: Открыть Android SDK Manager

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

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

Solutions Collecting From Web of "Получение намерения ACTION_SEND из галереи"

Обнаружено это в источнике 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+ мегапиксельными файлами, которые могут быть довольно большими (особенно, если вы разжимаете их на растровые изображения для обработки), и ваша память довольно ограничена.