将文本文件附加到电子邮件Intent对象的问题

时间:2011-06-30 07:36:50

标签: android

我要求我需要将应用生成的文本文件附加到电子邮件编辑器。

我已在我的应用程序私有区域(getFilesDirectory())创建了我的文件。

我将该文件路径的URI附加到电子邮件Intent对象。我能够看到电子邮件编辑器中的附件,但我无法收到附件。

我正在使用此语句将文件附加到intent对象

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

在谷歌搜索后我知道“getFilesDirectory()”只对我的应用程序是私有的,其他应用程序无法访问我的文件(我的情况是它的电​​子邮件)。

由于许多设备可能没有SD卡,我无法将文件保存在SD卡中。

请让我知道我可以存储文件的位置,以便将文件附加到电子邮件应用程序中。  感谢。

1 个答案:

答案 0 :(得分:0)

无法从应用程序区域附加文件,您需要先将其复制到SD卡中(临时或非临时)。如果系统中没有SD卡,则应通知用户。我最近一直在处理这个问题,但我没有找到任何替代方案。

您可以使用以下代码将文件复制到SD卡:

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:name =“android.permission.WRITE_EXTERNAL_STORAGE”