Intereting Posts
Андроидная передняя и задняя камера сняли проблему ориентации изображения, вращаются неправильно Соответствующий аудиоформат для звуковых эффектов на телефонах Android относительно эффективности Как использовать функцию onBlur в EditText в android? Как я могу проверить покупку Google в приложении в php? Создайте анализируемый JSON-файл для приложения для Android Треки Android: ошибка при восстановлении стека вызовов Android отменить все будильника Ионная сборка андроида ошибка при загрузке gradle Как программно отключить «масштаб анимации окон» на устройствах Android 4.0+? Android: Как показать «быстрый тур» при первом открытии приложения? Использование ускорителя для расчета скоростей Создание символических ссылок из приложения Java java Как сериализовать ArrayList на Android Ссылка WebView нажмите открыть браузер по умолчанию Как преобразовать растровое изображение в PNG, а затем в base64 в Android?

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