2011-06-30 30 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