2012-08-27 108 views
0

我試圖在我的電子郵件中發送一個png文件作爲我的res/drawable文件夾中的附件。我可以將文件附加到電子郵件中,但它缺少.png文件擴展名。我希望它在文件名中包含擴展名。有人可以幫忙嗎?這裏是我的代碼:如何使用Android資源創建Uri,文件擴展名爲

  Intent i = new Intent(Intent.ACTION_SEND_MULTIPLE); 
      i.setType("message/rfc822"); 
      i.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
      i.putExtra(Intent.EXTRA_TEXT , "Text"); 
      ArrayList<Uri> uris = new ArrayList<Uri>(); 
      Uri path = Uri.parse("android.resource://" + getPackageName() + "/" + R.drawable.png_image); 
      uris.add(newPath); 

      i.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); 
      try { 
       startActivity(Intent.createChooser(i, "Send mail...")); 
      } catch (android.content.ActivityNotFoundException ex) { 
       Toast.makeText(ShareActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
      } 

回答

0

類型更改爲這樣:

i.setType("image/png"); 

雖然我相信putParcelableArrayListExtra()是沒有必要的。 putExtra()應該完成這項工作。

+0

這使得它讓我的電子郵件客戶端知道它是一個png文件,但擴展仍然缺少的延伸。 – user1360244

0

使用此方法來獲取文件

public static String getMimeType(Context context, Uri uri) { 
    String extension; 

    //Check uri format to avoid null 
    if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) { 
     //If scheme is a content 
     final MimeTypeMap mime = MimeTypeMap.getSingleton(); 
     extension = mime.getExtensionFromMimeType(context.getContentResolver().getType(uri)); 
    } else { 
     //If scheme is a File 
     //This will replace white spaces with %20 and also other special characters. This will avoid returning null values on file name with spaces and special characters. 
     extension = MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(new File(uri.getPath())).toString()); 

    } 

    return extension; 
} 
相關問題