Android:正确下载/保存电子邮件附件

时间:2011-07-29 12:22:56

标签: android email download save attachment

我有一个有趣的问题:我的应用程序旨在发送和打开一个完整的zip文件,并且zip有一个特殊的扩展(对用户来说更容易)。我可以压缩我需要在电子邮件中附加的文件,我可以发送它们。

当我使用g-mail“查看”按钮并选择我的应用程序打开文件时,它不会正确解压缩它们。但是,如果我使用gmail“下载”按钮,然后通过文件资源管理器打开该文件,该文件将正确解压缩。

这是我用来下载附件的代码:

// get attachment
        try {
            attachment = getContentResolver().openInputStream(
                    getIntent().getData());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        // Save it
        try {
            File root = Environment.getExternalStorageDirectory();
            path = root.getPath() + "/PSattachment.psz";
            savedFile = new File(path);
            FileOutputStream fos = new FileOutputStream(savedFile, false);
            BufferedOutputStream os = new BufferedOutputStream(fos);
            byte[] buffer = new byte[1024];
            int byteRead = 0;
            while ((byteRead = attachment.read(buffer)) != -1) {
                os.write(buffer, 0, byteRead);
            }
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

我做错了吗?提前致谢。 (此外,在两种情况下解压缩的过程都是相同的[文件浏览器和来自电子邮件的视图],所以我很确定它是在这里的东西。此外,文件DOES下载,并且是正确的大小。它只是赢了'解压缩。)

2 个答案:

答案 0 :(得分:1)

我找到了答案!!!花了一段时间,但至少它现在有效:

            try {
            InputStream attachment = getContentResolver()
                    .openInputStream(getIntent().getData());
            savedFile = new File(Environment
                    .getExternalStorageDirectory().getAbsolutePath(),
                    "temp" + System.currentTimeMillis() + ".psz");
            FileOutputStream f = new FileOutputStream(savedFile);
            byte[] buffer = new byte[1024];
            int len1 = 0;
            while ((len1 = attachment.read(buffer)) > 0) {
                f.write(buffer);
            }
            f.close();
        } catch (Exception e) {
        }

我只是使用此代码下载附件,现在一切正常= D

答案 1 :(得分:0)

请检查出来: http://www.jondev.net/articles/Unzipping_Files_with_Android_(Programmatically)

在android中解压缩文件的指南,希望它有助于解决您的问题