2013-12-13 54 views
2

嗨im試圖創建一個應用程序,創建一個word文件,並通過郵件發送它。 到目前爲止,我設法創建的文件,用於調用郵件應用程序選擇器所需的意圖, 但是我遇到的2個問題:Android - 如何將文件附加到郵件,而不使用內容提供商

1)我收到一封含有比郵件程序的詳細列表 - 無線網絡,BT等顯示爲以及

2)如果我選擇gmail,請在gmail中查看文件名作爲附件,但發送後我收不到任何文件。 我試圖使用URI而不是Uri,但是當gmail嘗試附加文件時,我得到了javaNullExeption。

的問題是:如何發送附件(不使用複雜類等內容提供商如果可能的話)

我使用的代碼:

來創建該文件:

public void saveFile(String fileName,String content) throws IOException,FileNotFoundException 
    { 
     FileOutputStream fos = getContext().openFileOutput(fileName, Context.MODE_WORLD_READABLE); 
     fos.write(content.getBytes()); 
     fos.close();  
    } 

發送它:

public void sendAsMail(Context context,String fileName) 
{ 
    File file = new File(getContext().getFilesDir().getAbsolutePath()+"/"+fileName); 
    //file.setReadable(true); 
    //URI myUri = file.toURI(); 
      Uri myUri=Uri.fromFile(file); 
    Intent emailIntent = new Intent (Intent.ACTION_SEND); 
    emailIntent.setType("text/plain"); 
    emailIntent.putExtra(Intent.EXTRA_EMAIL,""); 
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, context.getResources().getString(R.string.free_search_mail_subject)); 
    emailIntent.putExtra(Intent.EXTRA_TEXT,context.getResources().getString(R.string.free_search_mail_content)); 
    emailIntent.putExtra(Intent.EXTRA_STREAM, myUri); 
    context.startActivity(Intent.createChooser(emailIntent, "Send the file using:")); 
} 

我測試了該文件,看看它是創造編輯正確(使用掃描儀打印),它似乎不是問題

+0

嘗試檢查文件是否存在於sendAsMail:file.exists()中。您也可以嘗試使用myUri.toString()來記錄Uri內容以檢查它是否正常。 –

+0

我測試了它,我得到的文件存在:I/System.out(30122):true 和uri是:file:///data/data/com.project.mishnayot/files/print.doc但它仍然沒有工作出於某種原因 –

回答

2

首先檢查文件是否創建。如果已創建,請嘗試使用此代碼:

public static void sendAsMail(File file, Context econtext) { 
    try { 
     final Intent emailIntent = new Intent(
       android.content.Intent.ACTION_SEND); 
     emailIntent.setType("text/*"); 
     emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, 
       new String[] { "" }); 
     emailIntent.putExtra(android.content.Intent.EXTRA_CC, 
       new String[] {}); 
     emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, 
       "FROM Sample"); 
     emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "HI"); 
     emailIntent.putExtra(android.content.Intent.EXTRA_STREAM, 
       Uri.parse(file.toURI().toString())); 
     mContext.startActivity(emailIntent); 
    } catch (Exception e) { 
    } 
} 

如果它不起作用,則註釋。

+0

o此作品,出於某種原因emailIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse(file.toURI()。toString()));雖然emailIntent.putExtra(Intent.EXTRA_STREAM,myUri);犯規 –