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

标签 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();
        }

我做错了什么吗?提前致谢。 (此外,解压缩过程在两种情况下都是相同的 [文件资源管理器和从电子邮件中查看],所以我很确定它在这里。此外,文件确实下载了,并且大小合适。它只是不会' t 解压缩)。

最佳答案

我找到答案了!!!花了一段时间,但至少现在可以用了:

            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

关于Android:正确下载/保存电子邮件附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6872991/

相关文章:

java - 如何在java中下载给定url的文件?

android - Android Studio 3.0 中不存在新的 Google Cloud 模块

android - 有效地汇总 firebase 数据

Android - 如何使用 Glide 按名称加载图像

android - ConstraintSet>>applyTo 将 TextView 的 Alpha 设置为 1f

unit-testing - 单元测试电子邮件内容

iOS 后台传输限制

css - 如何设计嵌入在电子邮件中的重力形式?

email - 使用 Swift 发送 HTML 电子邮件

java - 如何在 Java 中实现下载速率限制?