发送邮件时附件未附加到android中

时间:2015-01-28 04:25:40

标签: android android-intent

我有一个Android应用程序,它发送一个.csv文件作为附件,我已经在清单中给出了许多代码并且提到了许多代码,但每当我发送一个附件时,邮件都没有附件。我已经提到了很多stackoverflow解决方案,但它们根本没有效果。

这是代码。

sendmail.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                 sendEmail();
            }

             protected void sendEmail() {
      Log.i("Send email", "");

      String TO = email.getText().toString();

      Intent emailIntent = new Intent(Intent.ACTION_SEND);
      emailIntent.setData(Uri.parse("mailto:"));
      emailIntent.setType("text/plain");

      emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{TO});
      emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("excerDB.csv"));
      emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Your ward's academic details are here");
      emailIntent.putExtra(Intent.EXTRA_TEXT, "Please find the details attached....");
      startActivity(emailIntent);
      try {
         startActivity(Intent.createChooser(emailIntent, "Send mail..."));
         finish();
         Log.i("Finished sending email...", "");
      } catch (android.content.ActivityNotFoundException ex) {
         Toast.makeText(DisplayContact.this, 
         "There is no email client installed.", Toast.LENGTH_SHORT).show();
      }
   }
        });

P.S: - 我尝试在gennymotion模拟器和真实设备上运行。

2 个答案:

答案 0 :(得分:0)

  

发送邮件时附件未附加到安卓程序

因为您没有将csv文件的正确路径传递给Uri.parse

要创建有效的URI,您应提供完整的文件路径:

Uri uriFile=Uri.parse(<File_Location_On_Int./Ext. Sd_Card>+"/excerDB.csv");

现在使用uriFile作为EXTRA_STREAM键值。

答案 1 :(得分:0)

您的EXTRA_STREAM变量是错误的:

尝试以下:

打开图库,从按钮点击中选择文件:

 public void openGallery() {
              Intent intent = new Intent();
              intent.setType("image/*");
              intent.setAction(Intent.ACTION_GET_CONTENT);
              intent.putExtra("return-data", true);
              startActivityForResult(
                           Intent.createChooser(intent, "Complete action using"),
                           PICK_FROM_GALLERY);

       }

在活动结果上保存URI;

   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          if (requestCode == PICK_FROM_GALLERY && resultCode == RESULT_OK) {
                 /**
                  * Get Path, chnage type accordingly
                  */
                 Uri selectedImage = data.getData();
                 String[] filePathColumn = { MediaStore.Images.Media.DATA };

                 Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
                 cursor.moveToFirst();
                 columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                 attachmentFile = cursor.getString(columnIndex);
                 Log.e("Attachment Path:", attachmentFile);
                 URI = Uri.parse("file://" + attachmentFile);
                 cursor.close();
          }
   }