2011-06-30 32 views
0

我有一個要求,我需要將我的應用程序生成的文本文件附加到電子郵件作曲家。附加文本文件到電子郵件意圖對象的問題

我在我的應用程序專用區(getFilesDirectory())創建了我的文件。

我將該文件路徑的URI附加到電子郵件意圖對象。我能夠在電子郵件作曲家中看到附件,但我無法收到附件。

我使用這個說法的文件附加到意圖對象

intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(context.getFilesDirectory()+"abc.txt")); 

在做谷歌一些搜索我才知道「getFilesDirectory()」後的唯一的私人我的應用程序和其他應用程序的不能訪問我的文件(我的情況是它的電​​子郵件)。

由於許多設備可能沒有SD卡,我無法將我的文件保存在SD卡中。

請讓我知道我可以在哪裏存儲我的文件,以便我可以將我的文件附加到電子郵件應用程序。 謝謝。

回答

0

從應用程序區域附加文件是不可能的,您需要先複製到SDCard中(臨時或不是)。如果系統中沒有SDCard,則應通知用戶。最近我一直在處理這個問題,而且我沒有找到任何替代解決方案。

File data = Environment.getDataDirectory(); 
if (sd.canWrite()) { 
    String currentDBPath = "\\data\\application.package\\databases\\name"; 
    String backupDBPath = "name"; 
    File currentDB = new File(data, currentDBPath); 
    File backupDB = new File(sd, backupDBPath); 
    if (currentDB.exists()) { 
     FileChannel src; 
     try { 
      src = new FileInputStream(currentDB).getChannel(); 
      FileChannel dst = new FileOutputStream(backupDB).getChannel(); 
      try { 
       dst.transferFrom(src, 0, src.size()); 
       src.close(); 
       dst.close(); 
      } catch (IOException e) {              
       e.printStackTrace(); 
      } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 

切記,添加以下權限:機器人:名字=「android.permission.WRITE_EXTERNAL_STORAGE」

+1

嗨kikoso,感謝

您可以使用下面的代碼將文件複製到SD卡中你的回覆。但我不想將我的文件存儲在SD卡中。我認爲我們可以使用contentprovider機制來做到這一點,但我不知道如何去做。 PL。讓我知道你是否有任何想法。 – brig