merge in nyc-mr1-release history after reset to nyc-mr1-dev
diff --git a/src/com/android/storagemanager/automatic/NotificationController.java b/src/com/android/storagemanager/automatic/NotificationController.java
index 8f50bdb..443caa3 100644
--- a/src/com/android/storagemanager/automatic/NotificationController.java
+++ b/src/com/android/storagemanager/automatic/NotificationController.java
@@ -76,11 +76,13 @@
private static final String SHARED_PREFERENCES_NAME = "NotificationController";
private static final String NOTIFICATION_NEXT_SHOW_TIME = "notification_next_show_time";
private static final String NOTIFICATION_SHOWN_COUNT = "notification_shown_count";
+ private static final String NOTIFICATION_DISMISS_COUNT = "notification_dismiss_count";
private static final String STORAGE_MANAGER_PROPERTY = "ro.storage_manager.enabled";
private static final long DISMISS_DELAY = TimeUnit.DAYS.toMillis(15);
private static final long NO_THANKS_DELAY = TimeUnit.DAYS.toMillis(90);
private static final long MAXIMUM_SHOWN_COUNT = 4;
+ private static final long MAXIMUM_DISMISS_COUNT = 9;
private static final int NOTIFICATION_ID = 0;
@Override
@@ -130,7 +132,8 @@
SHARED_PREFERENCES_NAME,
Context.MODE_PRIVATE);
int timesShown = sp.getInt(NOTIFICATION_SHOWN_COUNT, 0);
- if (timesShown > MAXIMUM_SHOWN_COUNT) {
+ int timesDismissed = sp.getInt(NOTIFICATION_DISMISS_COUNT, 0);
+ if (timesShown >= MAXIMUM_SHOWN_COUNT || timesDismissed >= MAXIMUM_DISMISS_COUNT) {
return false;
}
@@ -159,7 +162,7 @@
Intent dismissIntent = new Intent(INTENT_ACTION_DISMISS);
dismissIntent.putExtra(INTENT_EXTRA_ID, NOTIFICATION_ID);
PendingIntent deleteIntent = PendingIntent.getBroadcast(context, 0,
- new Intent(INTENT_ACTION_DISMISS),
+ dismissIntent,
PendingIntent.FLAG_ONE_SHOT);
Intent contentIntent = new Intent(INTENT_ACTION_TAP);
@@ -186,6 +189,12 @@
}
private void cancelNotification(Context context, Intent intent) {
+ if (intent.getAction() == INTENT_ACTION_DISMISS) {
+ incrementNotificationDismissedCount(context);
+ } else {
+ incrementNotificationShownCount(context);
+ }
+
int id = intent.getIntExtra(INTENT_EXTRA_ID, -1);
if (id == -1) {
return;
@@ -193,8 +202,6 @@
NotificationManager manager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancel(id);
-
- incrementNotificationShownCount(context);
}
private void incrementNotificationShownCount(Context context) {
@@ -206,6 +213,15 @@
editor.apply();
}
+ private void incrementNotificationDismissedCount(Context context) {
+ SharedPreferences sp = context.getSharedPreferences(SHARED_PREFERENCES_NAME,
+ Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = sp.edit();
+ int dismissCount = sp.getInt(NOTIFICATION_DISMISS_COUNT, 0) + 1;
+ editor.putInt(NOTIFICATION_DISMISS_COUNT, dismissCount);
+ editor.apply();
+ }
+
private void delayNextNotification(Context context, long timeInMillis) {
SharedPreferences sp = context.getSharedPreferences(SHARED_PREFERENCES_NAME,
Context.MODE_PRIVATE);