Merge "Limit Instant App notifications"
This commit is contained in:
committed by
Android (Google) Code Review
commit
8ef92bce82
@@ -1440,6 +1440,11 @@ public class NotificationManagerService extends SystemService {
|
||||
return ;
|
||||
}
|
||||
|
||||
if (isCallerInstantApp(pkg)) {
|
||||
throw new SecurityException("Instant app " + pkg
|
||||
+ " is not allowed to create toasts");
|
||||
}
|
||||
|
||||
final boolean isSystemToast = isCallerSystem() || ("android".equals(pkg));
|
||||
final boolean isPackageSuspended =
|
||||
isPackageSuspendedForUser(pkg, Binder.getCallingUid());
|
||||
@@ -3123,6 +3128,13 @@ public class NotificationManagerService extends SystemService {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
} else if (isCallerInstantApp(pkg)) {
|
||||
// Ephemeral apps have some special contraints for notifications.
|
||||
// They are not allowed to create new notifications however they are allowed to
|
||||
// update notifications created by the system (e.g. a foreground service
|
||||
// notification).
|
||||
throw new SecurityException("Instant app " + pkg
|
||||
+ " cannot create notifications");
|
||||
}
|
||||
|
||||
int count = 0;
|
||||
@@ -4413,6 +4425,27 @@ public class NotificationManagerService extends SystemService {
|
||||
checkCallerIsSameApp(pkg);
|
||||
}
|
||||
|
||||
private boolean isCallerInstantApp(String pkg) {
|
||||
// System is always allowed to act for ephemeral apps.
|
||||
if (isCallerSystem()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
mAppOps.checkPackage(Binder.getCallingUid(), pkg);
|
||||
|
||||
try {
|
||||
ApplicationInfo ai = mPackageManager.getApplicationInfo(pkg, 0,
|
||||
UserHandle.getCallingUserId());
|
||||
if (ai == null) {
|
||||
throw new SecurityException("Unknown package " + pkg);
|
||||
}
|
||||
return ai.isInstantApp();
|
||||
} catch (RemoteException re) {
|
||||
throw new SecurityException("Unknown package " + pkg, re);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void checkCallerIsSameApp(String pkg) {
|
||||
final int uid = Binder.getCallingUid();
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user