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

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

8
задан KyleStew 13 April 2010 в 20:27
поделиться

2 ответа

Обнаружил это в источнике 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));
15
ответ дан 5 December 2019 в 11:23
поделиться

Не уверен в намерении ОТПРАВИТЬ, но при обработке возврата из намерений PICK в MediaStore для фотографии это выглядит примерно так:

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

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

0
ответ дан 5 December 2019 в 11:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: