下载gmail附件并将其保存到android中的sd卡

下载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",

我有所有的gmail附件列表,现在我需要下载选定的附件,并保存到sd卡后,用户点击下载按钮

我已经用下面的代码完成了,但是下载要花很多时间

如果有人做得更好,请帮助我

下面是我的代码

打开连接并获取所有附件并显示在listView中

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;
}}