2015-05-25 41 views
0

我想僅使用gmail從應用程序共享我的圖像。 這裏是我的一段代碼:將圖像從應用程序附加到Gmail並共享

if (id == R.id.menu_item_share) { 
    Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
    sharingIntent.setType("image/png"); 
    sharingIntent.putExtra(Intent.EXTRA_EMAIL,`enter code here` 
      new String[] { "[email protected]" }); 
    sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
    sharingIntent.putExtra(Intent.EXTRA_TEXT, "compose mail"); 
    sharingIntent.putExtra(Intent.EXTRA_STREAM, targetUri); 
    startActivity(Intent.createChooser(sharingIntent, "Share image using")); 

} 

i am getting all the sharing app, i want gmail to open with my image attached to it

如何修改我的代碼

+0

您只能使用ACTION_SENDTO常量打開郵件客戶端。 – Amy

回答

0

這種方法允許你共享數據單個應用程序。

 public void share(String nameApp, String imagePath, String message) { 
     try { 
      List<Intent> targetedShareIntents = new ArrayList<Intent>(); 
      Intent share = new Intent(android.content.Intent.ACTION_SEND); 
      share.setType("image/jpeg"); 
      share.putExtra(Intent.EXTRA_EMAIL,`enter code here` 
      new String[] { "[email protected]" }); 
      share.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
      share.putExtra(Intent.EXTRA_TEXT, "compose mail"); 
      List<ResolveInfo> resInfo = getPackageManager() 
        .queryIntentActivities(share, 0); 
      if (!resInfo.isEmpty()) { 
       for (ResolveInfo info : resInfo) { 
        Intent targetedShare = new Intent(
          android.content.Intent.ACTION_SEND); 
        targetedShare.setType("image/jpeg"); // put here your mime 
                  // type 
        if (info.activityInfo.packageName.toLowerCase().contains(
          nameApp) 
          || info.activityInfo.name.toLowerCase().contains(
            nameApp)) { 
         targetedShare.putExtra(Intent.EXTRA_SUBJECT, 
           "Sample Photo"); 
         targetedShare.putExtra(Intent.EXTRA_TEXT, message); 
         targetedShare.putExtra(Intent.EXTRA_STREAM, 
           Uri.fromFile(new File(imagePath))); 
         targetedShare.setPackage(info.activityInfo.packageName); 
         targetedShareIntents.add(targetedShare); 
        } 
       } 
       Intent chooserIntent = Intent.createChooser(
         targetedShareIntents.remove(0), "Select app to share"); 
       chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, 
         targetedShareIntents.toArray(new Parcelable[] {})); 
       startActivity(chooserIntent); 
      } 
     } catch (Exception e) { 
      Log.v("VM", 
        "Exception while sending image on" + nameApp + " " 
          + e.getMessage()); 
     } 
    } 

例如,您可以通過使用共享圖像gmail

File filePath = new File("your image path"); 
share("gmail",filePath.toString(),"your comment"); 

您還可以通過更改名稱來與其他應用程序共享。

share("facebook",filePath.toString(),"your comment"); 
share("twitter",filePath.toString(),"your comment"); 
+0

所以要附加一個圖像文件,我需要寫文件名或路徑? – Annapurna

+0

需要的圖片不是gettiing附加 – Annapurna

+0

它需要文件的absolutePath – Kartheek

0

嘗試的setType的message/rfc822代替image/png

0

就不得不提其要處理它的應用程序的包名。要通過Gmail應用發送郵件,請添加以下行

sharingIntent.setPackage("com.google.android.gm"); 
相關問題