Intereting Posts
Ошибка Twitter при отправке сообщения в андроид? Как установить временный каталог при создании cyanogenmod Espresso выдает ошибку при нажатии на полноэкранный просмотр с помощью Samsuns Galaxy S3 Как удалить всю папку и содержимое? Почему Android ddms не показывает эмулятор или подключенные устройства? Android 2.2 Нажмите и перетащите изображение в центре под сенсорным экраном Почему я могу написать «mnt / sdcard», а не «mnt / extsd»? Разработка Android – любой пример Google + SDK или кода? Action Bar Шерлок SearchView не расширяется по щелчку Изменение цвета изображения SearchView назад и четкости на панели инструментов Android Разработка PhoneGap для Android – Лучшая практика для разных размеров экрана / плотности пикселей Android RelativeLayout: как выравниватьParentBottom при завершении в ScrollView? Javacard applet RPDU не содержит никаких данных при доступе от seek-for-android Запросить параметр рабочего стола на мобильных устройствах Существует ли программный способ обхода чипов памяти на телефонах MIUI?

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