我有一个有趣的问题:我的应用程序旨在发送和打开一个zip文件全部,并且zip有一个特殊的扩展名(更容易为用户)。我可以将需要附加到电子邮件中的文件压缩,然后发送给他们。Android:正确下载/保存电子邮件附件
当我使用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解压缩)。
尝试使用OutputStreamWriter代替的BufferedOutputStream –
的只是尝试更改OS BufferedOutputStream到OutputStreamWriter .. os.write(buffer,0,byteRead)仍然可以工作 –
只读取byte [] – Mark