下载gmail附件并将其保存到android中的sd卡
我有所有的gmail附件列表,现在我需要下载选定的附件,并保存到sd卡后,用户点击下载按钮 我已经用下面的代码完成了,但是下载要花很多时间 如果有人做得更好,请帮助我 下面是我的代码 打开连接并获取所有附件并显示在listView中下载gmail附件并将其保存到android中的sd卡,android,download,gmail,attachment,Android,Download,Gmail,Attachment,我有所有的gmail附件列表,现在我需要下载选定的附件,并保存到sd卡后,用户点击下载按钮 我已经用下面的代码完成了,但是下载要花很多时间 如果有人做得更好,请帮助我 下面是我的代码 打开连接并获取所有附件并显示在listView中 private Message[] emails; ArrayList<ModelAttachment> attachment = new ArrayList<>(); Store store.connect("pop.gmail.com",
private Message[] emails;
ArrayList<ModelAttachment> attachment = new ArrayList<>();
Store store.connect("pop.gmail.com", "userName", "Password");
Folder inbox = store.getFolder("Inbox");
inbox.open(Folder.READ_ONLY);
Message[] msgs = inbox.getMessages();
emails = msgs;
for (int j = 0; j < 100; j++) {
Message message = msgs[j];
String contentType = message.getContentType();
Log.v("j", String.valueOf(j));
String messageContent = "";
Multipart multiPart;
if (contentType.contains("multipart")) {
multiPart = (Multipart) message.getContent();
for (int i = 0; i < multiPart.getCount(); i++) {
MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(i);
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
// this part is attachment
ModelAttachment model = new ModelAttachment();
model.setName(part.getFileName().toString());
attachment.add(model);
} else {
// this part may be the message content
messageContent = part.getContent().toString();
}
}
if (attachFiles.length() > 1) {
attachFiles = attachFiles.substring(0, attachFiles.length() - 2);
}
你尝试了什么?我尝试过使用MimeBody part类,但需要花费很多时间。请发布你的代码,否则别人帮不了你。@AkashPatel我已经添加了我的代码,如果你有任何想法,请帮助我尝试了什么?我尝试过使用MimeBody part类,但需要花费很多时间。请发布你的代码,否则别人帮不了你你。@AkashPatel我已经添加了我的代码,如果你有任何想法,请帮助我
for (int k = 0; k < attachment.size(); k++) {
if (attachment.get(k).isSelected()) {
String fileName = null;
try {
for (int j = 0; j < emails.length; j++) {
Message message = emails[j];
String contentType = message.getContentType();
if (contentType.contains("multipart")) {
Multipart multiPart = (Multipart) message.getContent();
for (int i = 0; i < multiPart.getCount(); i++) {
MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(i);
if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) {
if (part.getFileName().equals(attachment.get(k).getName()))
part.saveFile("sdCardPath" + File.separator + part.getFileName());
}
}
}
}
} catch (MessagingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class ModelAttachment {
Object name;
boolean isSelected;
public Object getName() {
return name;
}
public void setName(Object name) {
this.name = name;
}
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean selected) {
isSelected = selected;
}}