2012-07-13 25 views
2

我需要開發一個小型的電子郵件應用程序,我必須使用android生成CSV併發送該CSV文檔。我必須發送此附件而不保存到存儲器中。任何人都可以舉例發送帶有附件的郵件android

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    buttonSend = (Button) findViewById(R.id.buttonSend); 

    textTo = (EditText) findViewById(R.id.editTextTo); 
    textSubject = (EditText) findViewById(R.id.editTextSubject); 
    textMessage = (EditText) findViewById(R.id.editTextMessage); 

    buttonSend.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      String to = textTo.getText().toString(); 
      String subject = textSubject.getText().toString(); 
      String message = textMessage.getText().toString(); 

      Intent email = new Intent(Intent.ACTION_SEND); 
      email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to}); 
      //email.putExtra(Intent.EXTRA_CC, new String[]{ to}); 
      //email.putExtra(Intent.EXTRA_BCC, new String[]{to}); 
      email.setType("text/csv"); 
      email.putExtra(Intent.EXTRA_SUBJECT, subject); 
      email.putExtra(Intent.EXTRA_TEXT, message); 
     email.putExtra(Intent.EXTRA_STREAM,generateCsvFile("testdata.csv")); 

      //need this to prompts email client only 

      startActivity(Intent.createChooser(email, "Choose an Email client :")); 

     } 
    }); 
} 
public static FileWriter generateCsvFile(String sFileName) throws IOException 
    { 
     FileWriter writer; 
     writer = new FileWriter(sFileName); 
     writer.append("DisplayName"); 
     writer.append(','); 
     writer.append("Age"); 
     writer.append('\n'); 

     writer.append("RajeshV"); 
     writer.append(','); 
     writer.append("26"); 
     writer.append('\n'); 

     writer.append("Mrithula"); 
     writer.append(','); 
     writer.append("29"); 
     writer.append('\n'); 

     return writer; 
    } 

}

我在這一行有問題:

email.putExtra(Intent.EXTRA_STREAM,generateCsvFile("testdata.csv")); 
+0

相關:http://stackoverflow.com/questions/5401104/android-exporting-to-csv-and-sending-as-email-attachment – 2012-07-13 07:23:07

回答

2

我工作的代碼的更多信息

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    buttonSend = (Button) findViewById(R.id.buttonSend); 

    textTo = (EditText) findViewById(R.id.editTextTo); 
    textSubject = (EditText) findViewById(R.id.editTextSubject); 
    textMessage = (EditText) findViewById(R.id.editTextMessage); 

    buttonSend.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      String to = textTo.getText().toString(); 
      String subject = textSubject.getText().toString(); 
      String message = textMessage.getText().toString(); 

      Intent i = new Intent(Intent.ACTION_SEND); 
      i.setType("plain/text"); 
      File data = null; 
      try { 
       Date dateVal = new Date(); 
       String filename = dateVal.toString(); 
       data = File.createTempFile("Report", ".csv"); 
       FileWriter out = (FileWriter) GenerateCsv.generateCsvFile(
         data, "Name,Data1"); 
       i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(data)); 
       i.putExtra(Intent.EXTRA_EMAIL, new String[] { to }); 
       i.putExtra(Intent.EXTRA_SUBJECT, subject); 
       i.putExtra(Intent.EXTRA_TEXT, message); 
       startActivity(Intent.createChooser(i, "E-mail")); 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 
} 

public class GenerateCsv { 
    public static FileWriter generateCsvFile(File sFileName,String fileContent) { 
     FileWriter writer = null; 

     try { 
      writer = new FileWriter(sFileName); 
      writer.append(fileContent); 
         writer.flush(); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }finally 
     { 
      try { 
       writer.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
     return writer; 
    } 
} 

Add this line in AndroidManifest.xml file: 

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-p 
2

的是步驟我在使用文件作家,我的代碼如下附加的CSV文件中發現難發送附件

Intent email = new Intent(Intent.ACTION_SEND); 

email .setType("image/jpeg"); 

email .putExtra(Intent.EXTRA_SUBJECT, "My Picture"); 

email .putExtra(Intent.EXTRA_STREAM, Uri.parse("file://sdcard/captureimage.png")); 

startActivity(Intent.createChooser(email , "Email:")); 

對於您可以參考以下鏈接

multiple attachments

email with attached file

+0

沒有,我在我的預期應用程序首先我必須暫時生成帶有一些數據的CSV文件,而不是從SD卡中查找文件,我想將此生成的臨時文件作爲附件發送。 – RajeshVijayakumar 2012-07-13 12:12:06

+0

所以給你http://stackoverflow.com/questions/3570914/android-how-do-i-attach-a-temporary-generated-image-to-an-email或http://stackoverflow.com/questions/ 4123420/android-not-able-to-attach -a-file-in-email可能對你有所幫助 – Harish 2012-07-13 12:46:22

1
@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     buttonSend = (Button) findViewById(R.id.buttonSend); 
     textTo = (EditText) findViewById(R.id.editTextTo); 
     textSubject = (EditText) findViewById(R.id.editTextSubject); 
     textMessage = (EditText) findViewById(R.id.editTextMessage); 

     buttonSend.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       String to = textTo.getText().toString(); 
       String subject = textSubject.getText().toString(); 
       String message = textMessage.getText().toString(); 

       Intent email = new Intent(Intent.ACTION_SEND); 
       email.putExtra(Intent.EXTRA_EMAIL, new String[]{ to}); 
       //email.putExtra(Intent.EXTRA_CC, new String[]{ to}); 
       //email.putExtra(Intent.EXTRA_BCC, new String[]{to}); 
       email.putExtra(Intent.EXTRA_SUBJECT, subject); 
       email.putExtra(Intent.EXTRA_TEXT, message); 

       //need this to prompts email client only 
       email.setType("message/rfc822"); 

       startActivity(Intent.createChooser(email, "Choose an Email client :")); 

      } 
     }); 
    } 
} 
1

我爲發送任何做文件從SD卡與郵件在tachment ..

Intent sendEmail= new Intent(Intent.ACTION_SEND); 
    sendEmail.setType("rar/image"); 
    sendEmail.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new   
      File("/mnt/sdcard/download/abc.rar"))); 
      startActivity(Intent.createChooser(sendEmail, "Email:")); 
+0

我不想將文件保存在sd卡中,我想在創建文件後立即發送郵件 – RajeshVijayakumar 2012-11-21 16:44:10

+0

所以你可以這個代碼保存你的文件在SD卡後.. – pradip 2012-11-22 06:40:49

0
Intent jj=new Intent(android.content.Intent.ACTION_SEND); 

Intent jj=new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); 

String fileName = "file://" + Environment.getExternalStorageDirectory()+"/"+filename;   

jj.putExtra(Intent.EXTRA_SUBJECT, "Chat Info"); 

jj.putExtra(Intent.EXTRA_STREAM, Uri.parse(fileName)); 

jj.setType("message/rsc822"); 

Intent chooser = Intent.createChooser(jj , "Select Sender"); 

context.startActivity(chooser); 
相關問題