Fixed bug: failed upload notification not appearing in Android 2.x devices

This commit is contained in:
David A. Velasco 2014-07-14 14:50:02 +02:00
parent 055be96386
commit 9778f720dc

View file

@ -724,7 +724,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
* @param uploadResult Result of the upload operation.
* @param upload Finished upload operation
*/
private void notifyUploadResult(RemoteOperationResult uploadResult, UploadFileOperation upload) {
private void notifyUploadResult(
RemoteOperationResult uploadResult, UploadFileOperation upload) {
Log_OC.d(TAG, "NotifyUploadResult with resultCode: " + uploadResult.getCode());
// / cancelled operation or success -> silent removal of progress notification
mNotificationManager.cancel(R.string.uploader_upload_in_progress_ticker);
@ -734,8 +735,6 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
int tickerId = (uploadResult.isSuccess()) ? R.string.uploader_upload_succeeded_ticker :
R.string.uploader_upload_failed_ticker;
NotificationCompat.Builder resultBuilder = new NotificationCompat.Builder(this);
String content = null;
// check credentials error
@ -746,41 +745,60 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
tickerId = (needsToUpdateCredentials) ?
R.string.uploader_upload_failed_credentials_error : tickerId;
resultBuilder
.setSmallIcon(R.drawable.notification_icon)
mNotificationBuilder
.setTicker(getString(tickerId))
.setContentTitle(getString(tickerId))
.setAutoCancel(true);
.setAutoCancel(true)
.setOngoing(false)
.setProgress(0, 0, false);
content = ErrorMessageAdapter.getErrorCauseMessage(uploadResult, upload, getResources());
content = ErrorMessageAdapter.getErrorCauseMessage(
uploadResult, upload, getResources()
);
if (needsToUpdateCredentials) {
// let the user update credentials with one click
Intent updateAccountCredentials = new Intent(this, AuthenticatorActivity.class);
updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACCOUNT, upload.getAccount());
updateAccountCredentials.putExtra(AuthenticatorActivity.EXTRA_ACTION, AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN);
updateAccountCredentials.putExtra(
AuthenticatorActivity.EXTRA_ACCOUNT, upload.getAccount()
);
updateAccountCredentials.putExtra(
AuthenticatorActivity.EXTRA_ACTION,
AuthenticatorActivity.ACTION_UPDATE_EXPIRED_TOKEN
);
updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
updateAccountCredentials.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
updateAccountCredentials.addFlags(Intent.FLAG_FROM_BACKGROUND);
resultBuilder.setContentIntent(PendingIntent.getActivity(
this, (int) System.currentTimeMillis(), updateAccountCredentials, PendingIntent.FLAG_ONE_SHOT
mNotificationBuilder.setContentIntent(PendingIntent.getActivity(
this,
(int) System.currentTimeMillis(),
updateAccountCredentials,
PendingIntent.FLAG_ONE_SHOT
));
mUploadClient = null; // grant that future retries on the same account will get the fresh credentials
mUploadClient = null;
// grant that future retries on the same account will get the fresh credentials
} else {
resultBuilder.setContentText(content);
mNotificationBuilder.setContentText(content);
if (upload.isInstant()) {
DbHandler db = null;
try {
db = new DbHandler(this.getBaseContext());
String message = uploadResult.getLogMessage() + " errorCode: " + uploadResult.getCode();
String message = uploadResult.getLogMessage() + " errorCode: " +
uploadResult.getCode();
Log_OC.e(TAG, message + " Http-Code: " + uploadResult.getHttpCode());
if (uploadResult.getCode() == ResultCode.QUOTA_EXCEEDED) {
message = getString(R.string.failed_upload_quota_exceeded_text);
if (db.updateFileState(upload.getOriginalStoragePath(), DbHandler.UPLOAD_STATUS_UPLOAD_FAILED,
if (db.updateFileState(
upload.getOriginalStoragePath(),
DbHandler.UPLOAD_STATUS_UPLOAD_FAILED,
message) == 0) {
db.putFileForLater(upload.getOriginalStoragePath(), upload.getAccount().name, message);
db.putFileForLater(
upload.getOriginalStoragePath(),
upload.getAccount().name,
message
);
}
}
} finally {
@ -791,8 +809,8 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
}
}
resultBuilder.setContentText(content);
mNotificationManager.notify(tickerId, resultBuilder.build());
mNotificationBuilder.setContentText(content);
mNotificationManager.notify(tickerId, mNotificationBuilder.build());
if (uploadResult.isSuccess()) {