summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsrc/com/android/providers/downloads/DownloadNotifier.java33
1 files changed, 31 insertions, 2 deletions
diff --git a/src/com/android/providers/downloads/DownloadNotifier.java b/src/com/android/providers/downloads/DownloadNotifier.java
index 809347fd..bd4a5334 100755
--- a/src/com/android/providers/downloads/DownloadNotifier.java
+++ b/src/com/android/providers/downloads/DownloadNotifier.java
@@ -163,9 +163,19 @@ public class DownloadNotifier {
}
}
+ // Check error status about downloads. If error exists, will
+ // update icon and content title/content text in notification.
+ boolean hasErrorStatus = false;
+ for (DownloadInfo info : cluster) {
+ if (isErrorStatus(info.mStatus)) {
+ hasErrorStatus = true;
+ break;
+ }
+ }
+
// Show relevant icon
if (type == TYPE_ACTIVE) {
- if (hasPausedStatus) {
+ if (hasPausedStatus || hasErrorStatus) {
builder.setSmallIcon(R.drawable.download_pause);
} else {
builder.setSmallIcon(android.R.drawable.stat_sys_download);
@@ -220,9 +230,9 @@ public class DownloadNotifier {
String remainingText = null;
String percentText = null;
String speedAsSizeText = null;
+ long total = 0;
if (type == TYPE_ACTIVE) {
long current = 0;
- long total = 0;
long speed = 0;
synchronized (mDownloadSpeed) {
for (DownloadInfo info : cluster) {
@@ -283,6 +293,11 @@ public class DownloadNotifier {
} else if (speedAsSizeText != null) {
builder.setContentText(res.getString(R.string.download_speed_text,
remainingText, speedAsSizeText));
+ } else if (hasErrorStatus) {
+ builder.setContentText(res.getText(
+ R.string.notification_download_failed));
+ if (total == 0)
+ builder.setProgress(100, 0, false);
}
builder.setContentInfo(percentText);
@@ -311,6 +326,11 @@ public class DownloadNotifier {
if (type == TYPE_ACTIVE) {
if (hasPausedStatus) {
builder.setContentTitle(res.getString(R.string.download_queued));
+ } else if (hasErrorStatus) {
+ builder.setContentText(res.getText(
+ R.string.notification_download_failed));
+ if (total == 0)
+ builder.setProgress(100, 0, false);
} else {
builder.setContentTitle(res.getQuantityString(
R.plurals.notif_summary_active, cluster.size(), cluster.size()));
@@ -416,4 +436,13 @@ public class DownloadNotifier {
status == Downloads.Impl.STATUS_PAUSED_BY_MANUAL;
}
+ private static boolean isErrorStatus(int status) {
+ boolean isErrorStatus = Downloads.Impl.isStatusError(status)
+ || Downloads.Impl.isStatusClientError(status)
+ || Downloads.Impl.isStatusServerError(status)
+ || status == Downloads.Impl.STATUS_INSUFFICIENT_SPACE_ERROR
+ || status == Downloads.Impl.STATUS_DEVICE_NOT_FOUND_ERROR;
+ return isErrorStatus;
+ }
+
}