Fixed bug: failed upload notification not appearing in Android 2.x devices
authorDavid A. Velasco <dvelasco@solidgear.es>
Mon, 14 Jul 2014 12:50:02 +0000 (14:50 +0200)
committerDavid A. Velasco <dvelasco@solidgear.es>
Mon, 14 Jul 2014 12:50:02 +0000 (14:50 +0200)
src/com/owncloud/android/files/services/FileUploader.java

index 535ab13..626ed79 100644 (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()) {