Отправка вложения PNG через приложение Android GMail - PullRequest
1 голос
/ 22 октября 2010

Я прикрепляю изображение PNG к электронному письму со следующим кодом:

ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.TITLE, title);
values.put(MediaStore.Images.Media.DESCRIPTION, title);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
Uri uri = activity.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
OutputStream stream = activity.getContentResolver().openOutputStream(uri);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
stream.close();

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/png");
intent.putExtra(Intent.EXTRA_SUBJECT, "Message title");
intent.putExtra(Intent.EXTRA_TEXT, "Message body");
intent.putExtra(Intent.EXTRA_STREAM, uri);
activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.share)));

Собственное почтовое приложение HTC справляется с этим штрафом, но приложение GMail настаивает на том, чтобы приложениеРасширение ".jpg", хотя изображение определенно PNG.Это может быть просто ошибкой в ​​приложении GMail, но я все равно хотел бы спросить.

Вот что logcat показывает, когда вложение прикреплено:

I/Gmail   (  285): >>>>> Attachment uri: content://media/external/images/media/11
I/Gmail   (  285): >>>>>           type: image/png
I/Gmail   (  285): >>>>>           name: 1287752711300.jpg
I/Gmail   (  285): >>>>>           size: 0

Есть ли способконтролировать имя файла, используемого приложением GMail?Я не смог найти ничего очевидного в документации по дополнениям Intent.В идеале я мог бы указать полное имя, но даже получение правильного расширения файла было бы победой.

1 Ответ

2 голосов
/ 22 октября 2010

Может быть, приложение GMail предполагает, что контент, предоставляемый приложением магазина мультимедиа, всегда представляет собой изображения jpg. Это может быть даже хранилище мультимедиа, которое может предоставлять неверные данные приложению GMail.

Вы можете попытаться сохранить файл PNG в файловой системе, и поскольку GMail не полностью поддерживает файл: // Uris (он работает только с файлами во внешнем хранилище), вы можете использовать пользовательский ContentProvider, чтобы просто предоставлять контент из файл с контентом: // uri вместо. Вы можете найти такого поставщика контента здесь .

Еще одним простым тестом может быть отправка PNG-файла из файловой системы через GMail с помощью приложения File Explorer, такого как EStrongs или Astro. Если GMail все еще вызывает расширение .jpg, то вам может быть трудно найти способ обойти это.

Последняя идея, попробуйте использовать более общий MIME-тип, такой как application / octet-stream (но это может привести к проблемам в почтовых приложениях получателей почты, которые могут не понимать, что это за файл)

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