【发布时间】:2016-09-21 23:41:34
【问题描述】:
在通过 Android 版 Gmail Api 插入邮件时,我试图获取有关我的 asynctask 进度的信息感到很沮丧。
我正在尝试使用 MediaHttpUploaderProgressListener,但问题是我只是从插入的 getMediaHttpUploader() 方法中得到 null。
我认为我在中间遗漏了一些重要的东西,以便从 getMediaHttpUploader 中获得预期的响应......
这是我的代码:
private class TareaGestionEnvioMails extends AsyncTask<Void, Void, Message> {
@Override
protected Message doInBackground(Void... params) {
try {
if (mensaje != null) {
String user = "me";
Gmail.Users.Messages.Insert insert = servicioGmail.users().messages().insert(user, mensaje);
MediaHttpUploader uploader = insert.getMediaHttpUploader();
//getMediaHttpUploader returns me null value :(
uploader.setDirectUploadEnabled(false);
uploader.setChunkSize(1024*256);
uploader.setProgressListener(new FileUploadProgressListener());
mensaje = insert.execute();
}
return mensaje;
} catch (Exception e) {
mLastError = e;
cancel(true);
return null;
}
}
...
private class FileUploadProgressListener implements MediaHttpUploaderProgressListener {
public FileUploadProgressListener() {
}
@Override
public void progressChanged(MediaHttpUploader mediaHttpUploader) throws IOException {
if (mediaHttpUploader == null) return;
switch (mediaHttpUploader.getUploadState()) {
case INITIATION_STARTED:
pantallaPrincipal.onProgresoEnviarMail(0.0, "INITIATION_STARTED");
break;
case INITIATION_COMPLETE:
pantallaPrincipal.onProgresoEnviarMail(0.0, "INITIATION_COMPLETE");
break;
case MEDIA_IN_PROGRESS:
double percent = mediaHttpUploader.getProgress() * 100;
pantallaPrincipal.onProgresoEnviarMail(percent, "MEDIA_IN_PROGRESS");
break;
case MEDIA_COMPLETE:
pantallaPrincipal.onProgresoEnviarMail(100.0, "MEDIA_COMPLETE");
}
}
}
谢谢大家!这是我第一次在 Stackoverflow 上发帖!
【问题讨论】:
标签: android api gmail listener progress