代码之家  ›  专栏  ›  技术社区  ›  Dan Dyer

通过Android GMail应用发送PNG附件

  •  1
  • Dan Dyer  · 技术社区  · 14 年前

    我正在用以下代码将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应用程序中的一个错误,但我还是想问问。

    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应用程序使用的文件名?我在意向附加文件中找不到任何明显的内容。理想情况下,我可以指定全名,但即使只是让它使用正确的文件扩展名也是一个胜利。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Kevin Gaudin    12 年前

    也许GMail应用程序假设媒体商店应用程序提供的内容总是jpg图片。甚至可能是媒体商店向GMail应用程序提供了错误的数据。

    here .

    另一个简单的测试可以是使用像EStrongs或Astro这样的文件浏览器应用程序通过GMail从文件系统发送PNG文件。如果GMail仍然强制使用.jpg扩展,那么您可能很难找到解决这个问题的方法。