我附加了一個PNG圖像的電子郵件與下面的代碼:通過Android版Gmail應用發送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應用程序堅持即使圖片絕對是PNG,也會給附件一個「.jpg」擴展名。這可能只是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 extras文檔中找不到任何明顯的內容。理想情況下,我可以指定全名,但即使只是使用正確的文件擴展名也是一個勝利。
你是對。一旦我將它轉換爲使用ContentProvider,GMail表現得更加明智一些。這是更多的代碼,但最好這樣做比放置Media商店中的文件更好。 – 2010-10-22 22:26:31
該鏈接不再有效,還有其他例子嗎? – 2012-02-09 00:41:49
@ErikB現在可以找到同一個文件[here](http://code.google.com/p/openintents/source/browse/trunk/filemanager/FileManager/src/org/openintents/filemanager/FileManagerProvider.java) 。 – 2012-06-21 11:46:28