summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wren <cwren@android.com>2015-06-25 18:21:01 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-25 18:21:03 +0000
commitc26939b4781bd70ab0fb8fff4151bfe616ad15d1 (patch)
treeebf89b121e0401b9cd23e2e0b40d03db593a5fde
parent263b6e6983f50910f7e59d688ceb7ebd031ea2b3 (diff)
parent66189fc16883f330faca928fe8e9b752b4b1a60e (diff)
downloadframeworks_base-c26939b4781bd70ab0fb8fff4151bfe616ad15d1.zip
frameworks_base-c26939b4781bd70ab0fb8fff4151bfe616ad15d1.tar.gz
frameworks_base-c26939b4781bd70ab0fb8fff4151bfe616ad15d1.tar.bz2
Merge "add banned packages to notification dumpsys" into mnc-dev
-rw-r--r--services/core/java/com/android/server/notification/NotificationManagerService.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 4524ff8..d6a7bf93 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -50,6 +50,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ParceledListSlice;
+import android.content.pm.UserInfo;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.media.AudioAttributes;
@@ -72,6 +73,7 @@ import android.os.Process;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.os.UserManager;
import android.os.Vibrator;
import android.provider.Settings;
import android.service.notification.Condition;
@@ -441,6 +443,12 @@ public class NotificationManagerService extends SystemService {
return true;
}
+ /** Use this to check if a package can post a notification or toast. */
+ private boolean checkNotificationOp(String pkg, int uid) {
+ return mAppOps.checkOp(AppOpsManager.OP_POST_NOTIFICATION, uid, pkg)
+ == AppOpsManager.MODE_ALLOWED;
+ }
+
private static final class ToastRecord
{
final int pid;
@@ -1909,6 +1917,26 @@ public class NotificationManagerService extends SystemService {
r.dump(pw, " ", getContext());
}
}
+
+ try {
+ pw.println("\n Banned Packages:");
+ for(UserInfo user : UserManager.get(getContext()).getUsers()) {
+ final int userId = user.getUserHandle().getIdentifier();
+ pw.println(" UserId " + userId);
+ final PackageManager packageManager = getContext().getPackageManager();
+ List<PackageInfo> packages = packageManager.getInstalledPackages(0, userId);
+ final int packageCount = packages.size();
+ for (int p = 0; p < packageCount; p++) {
+ final String packageName = packages.get(p).packageName;
+ final int uid = packageManager.getPackageUid(packageName, userId);
+ if (!checkNotificationOp(packageName, uid)) {
+ pw.println(" " + packageName);
+ }
+ }
+ }
+ } catch (NameNotFoundException e) {
+ // pass
+ }
}
}