Получение намерения ACTION_SEND из Галереи - PullRequest
8 голосов
/ 14 апреля 2010

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

Ответы [ 2 ]

15 голосов
/ 15 апреля 2010

Нашел это в источнике 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));
0 голосов
/ 14 апреля 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...