diff options
author | Chris Wren <cwren@android.com> | 2015-06-25 18:21:01 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-06-25 18:21:03 +0000 |
commit | c26939b4781bd70ab0fb8fff4151bfe616ad15d1 (patch) | |
tree | ebf89b121e0401b9cd23e2e0b40d03db593a5fde | |
parent | 263b6e6983f50910f7e59d688ceb7ebd031ea2b3 (diff) | |
parent | 66189fc16883f330faca928fe8e9b752b4b1a60e (diff) | |
download | frameworks_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.java | 28 |
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 + } } } |