Notification summary updates.

Change-Id: I6b824acf27743637ca661b38b51c639ecf099208
This commit is contained in:
Julia Reynolds
2016-03-08 15:39:03 -05:00
parent 4695fc7e48
commit 3e912e7ea5
7 changed files with 67 additions and 27 deletions

View File

@@ -16,9 +16,12 @@
package com.android.settings.applications;
import android.app.Notification;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.UserHandle;
import android.service.notification.NotificationListenerService;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.notification.NotificationBackend;
import com.android.settings.notification.NotificationBackend.AppRow;
import com.android.settingslib.applications.ApplicationsState;
@@ -35,11 +38,13 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
private final NotificationBackend mNotifBackend;
private final PackageManager mPm;
private final Context mContext;
public AppStateNotificationBridge(PackageManager pm, ApplicationsState appState,
public AppStateNotificationBridge(Context context, ApplicationsState appState,
Callback callback, NotificationBackend notifBackend) {
super(appState, callback);
mPm = pm;
mContext = context;
mPm = mContext.getPackageManager();
mNotifBackend = notifBackend;
}
@@ -49,13 +54,13 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
final int N = apps.size();
for (int i = 0; i < N; i++) {
AppEntry app = apps.get(i);
app.extraInfo = mNotifBackend.loadAppRow(mPm, app.info);
app.extraInfo = mNotifBackend.loadAppRow(mContext, mPm, app.info);
}
}
@Override
protected void updateExtraInfo(AppEntry app, String pkg, int uid) {
app.extraInfo = mNotifBackend.loadAppRow(mPm, app.info);
app.extraInfo = mNotifBackend.loadAppRow(mContext, mPm, app.info);
}
public static final AppFilter FILTER_APP_NOTIFICATION_BLOCKED = new AppFilter() {
@@ -107,7 +112,7 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
@Override
public boolean filterApp(AppEntry info) {
return info.extraInfo != null
return info.extraInfo != null && ((AppRow) info.extraInfo).lockScreenSecure
&& ((AppRow) info.extraInfo).appVisOverride == Notification.VISIBILITY_PRIVATE;
}
};
@@ -119,7 +124,7 @@ public class AppStateNotificationBridge extends AppStateBaseBridge {
@Override
public boolean filterApp(AppEntry info) {
return info.extraInfo != null
return info.extraInfo != null && ((AppRow) info.extraInfo).lockScreenSecure
&& ((AppRow) info.extraInfo).appVisOverride == Notification.VISIBILITY_SECRET;
}
};

View File

@@ -21,6 +21,7 @@ import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.LoaderManager.LoaderCallbacks;
import android.app.Notification;
import android.app.admin.DevicePolicyManager;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
@@ -73,6 +74,7 @@ import android.widget.TextView;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.internal.os.BatterySipper;
import com.android.internal.os.BatteryStatsHelper;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.AppHeader;
import com.android.settings.DeviceAdminAdd;
import com.android.settings.R;
@@ -1001,18 +1003,39 @@ public class InstalledAppDetails extends AppInfoBase
public static CharSequence getNotificationSummary(AppEntry appEntry, Context context,
NotificationBackend backend) {
AppRow appRow = backend.loadAppRow(context.getPackageManager(), appEntry.info);
AppRow appRow = backend.loadAppRow(context, context.getPackageManager(), appEntry.info);
return getNotificationSummary(appRow, context);
}
public static CharSequence getNotificationSummary(AppRow appRow, Context context) {
List<String> summaryAttributes = new ArrayList<>();
StringBuffer summary = new StringBuffer();
if (appRow.banned) {
return context.getString(R.string.notifications_disabled);
summaryAttributes.add(context.getString(R.string.notifications_disabled));
} else if (appRow.appImportance > NotificationListenerService.Ranking.IMPORTANCE_NONE
&& appRow.appImportance < NotificationListenerService.Ranking.IMPORTANCE_DEFAULT) {
return context.getString(R.string.notifications_silenced);
summaryAttributes.add(context.getString(R.string.notifications_silenced));
}
return "";
final boolean lockscreenSecure = new LockPatternUtils(context).isSecure(
UserHandle.myUserId());
if (lockscreenSecure) {
if (appRow.appVisOverride == Notification.VISIBILITY_PRIVATE) {
summaryAttributes.add(context.getString(R.string.notifications_redacted));
} else if (appRow.appVisOverride == Notification.VISIBILITY_SECRET) {
summaryAttributes.add(context.getString(R.string.notifications_hidden));
}
}
if (appRow.appBypassDnd) {
summaryAttributes.add(context.getString(R.string.notifications_priority));
}
final int N = summaryAttributes.size();
for (int i = 0; i < N; i++) {
if (i > 0) {
summary.append(context.getString(R.string.notifications_summary_divider));
}
summary.append(summaryAttributes.get(i));
}
return summary.toString();
}
private class MemoryUpdater extends AsyncTask<Void, Void, ProcStatsPackageEntry> {

View File

@@ -788,8 +788,8 @@ public class ManageApplications extends InstrumentedFragment
mPm = mContext.getPackageManager();
mFilterMode = filterMode;
if (mManageApplications.mListType == LIST_TYPE_NOTIFICATION) {
mExtraInfoBridge = new AppStateNotificationBridge(mContext.getPackageManager(),
mState, this, manageApplications.mNotifBackend);
mExtraInfoBridge = new AppStateNotificationBridge(mContext, mState, this,
manageApplications.mNotifBackend);
} else if (mManageApplications.mListType == LIST_TYPE_USAGE_ACCESS) {
mExtraInfoBridge = new AppStateUsageBridge(mContext, mState, this);
} else if (mManageApplications.mListType == LIST_TYPE_HIGH_POWER) {

View File

@@ -52,7 +52,7 @@ public class NotificationApps extends ManageApplications {
ApplicationsState.getInstance((Application) context.getApplicationContext());
mSession = mAppState.newSession(this);
mNotifBackend = new NotificationBackend();
mExtraInfoBridge = new AppStateNotificationBridge(mContext.getPackageManager(),
mExtraInfoBridge = new AppStateNotificationBridge(mContext,
mAppState, this, mNotifBackend);
}
@@ -72,8 +72,8 @@ public class NotificationApps extends ManageApplications {
if (apps.size() == 0) {
mLoader.setSummary(this, mContext.getString(R.string.notification_summary_none));
} else {
mLoader.setSummary(this, mContext.getString(R.string.notification_summary,
apps.size()));
mLoader.setSummary(this, mContext.getResources().getQuantityString(
R.plurals.notification_summary, apps.size(), apps.size()));
}
}