summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-04-17 21:26:49 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-04-17 21:26:54 +0000
commit1ed27714509853831e2d4e5b3098b643ccc164c4 (patch)
tree18089fd0f1e6d5a76fd722d052fb11c14813a42b /core/java/android
parent11139e913c3b4897c6ff37606e614d3db1f23418 (diff)
parentf27d6b2b821bf818810a0e303d536906b889588d (diff)
Merge "Add user to channel/group modification callbacks." into oc-dev
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/INotificationManager.aidl7
-rw-r--r--core/java/android/service/notification/INotificationListener.aidl5
-rw-r--r--core/java/android/service/notification/NotificationListenerService.java87
3 files changed, 59 insertions, 40 deletions
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index f4e8f3f5687e..cd9c095890e7 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -27,6 +27,7 @@ import android.content.Intent;
import android.content.pm.ParceledListSlice;
import android.net.Uri;
import android.os.Bundle;
+import android.os.UserHandle;
import android.service.notification.Adjustment;
import android.service.notification.Condition;
import android.service.notification.IConditionListener;
@@ -101,9 +102,9 @@ interface INotificationManager
void setOnNotificationPostedTrimFromListener(in INotificationListener token, int trim);
void setInterruptionFilter(String pkg, int interruptionFilter);
- void updateNotificationChannelFromPrivilegedListener(in INotificationListener token, String pkg, in NotificationChannel channel);
- ParceledListSlice getNotificationChannelsFromPrivilegedListener(in INotificationListener token, String pkg);
- ParceledListSlice getNotificationChannelGroupsFromPrivilegedListener(in INotificationListener token, String pkg);
+ void updateNotificationChannelFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user, in NotificationChannel channel);
+ ParceledListSlice getNotificationChannelsFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user);
+ ParceledListSlice getNotificationChannelGroupsFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user);
void applyEnqueuedAdjustmentFromAssistant(in INotificationListener token, in Adjustment adjustment);
void applyAdjustmentFromAssistant(in INotificationListener token, in Adjustment adjustment);
diff --git a/core/java/android/service/notification/INotificationListener.aidl b/core/java/android/service/notification/INotificationListener.aidl
index dc1a70d74d7f..ed44f2599695 100644
--- a/core/java/android/service/notification/INotificationListener.aidl
+++ b/core/java/android/service/notification/INotificationListener.aidl
@@ -18,6 +18,7 @@ package android.service.notification;
import android.app.NotificationChannel;
import android.app.NotificationChannelGroup;
+import android.os.UserHandle;
import android.service.notification.IStatusBarNotificationHolder;
import android.service.notification.StatusBarNotification;
import android.service.notification.NotificationRankingUpdate;
@@ -36,8 +37,8 @@ oneway interface INotificationListener
void onInterruptionFilterChanged(int interruptionFilter);
// companion device managers only
- void onNotificationChannelModification(String pkgName, in NotificationChannel channel, int modificationType);
- void onNotificationChannelGroupModification(String pkgName, in NotificationChannelGroup group, int modificationType);
+ void onNotificationChannelModification(String pkgName, in UserHandle user, in NotificationChannel channel, int modificationType);
+ void onNotificationChannelGroupModification(String pkgName, in UserHandle user, in NotificationChannelGroup group, int modificationType);
// rankers only
void onNotificationEnqueued(in IStatusBarNotificationHolder notificationHolder);
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index 4833be335c88..00bd30456c9e 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -49,6 +49,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.UserHandle;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
@@ -231,25 +232,25 @@ public abstract class NotificationListenerService extends Service {
/**
* Channel or group modification reason provided to
- * {@link #onNotificationChannelModified(String, NotificationChannel, int)} or
- * {@link #onNotificationChannelGroupModified(String, NotificationChannelGroup, int)}- the
- * provided object was created.
+ * {@link #onNotificationChannelModified(String, UserHandle,NotificationChannel, int)} or
+ * {@link #onNotificationChannelGroupModified(String, UserHandle, NotificationChannelGroup,
+ * int)}- the provided object was created.
*/
public static final int NOTIFICATION_CHANNEL_OR_GROUP_ADDED = 1;
/**
* Channel or group modification reason provided to
- * {@link #onNotificationChannelModified(String, NotificationChannel, int)} or
- * {@link #onNotificationChannelGroupModified(String, NotificationChannelGroup, int)}- the
- * provided object was updated.
+ * {@link #onNotificationChannelModified(String, UserHandle, NotificationChannel, int)} or
+ * {@link #onNotificationChannelGroupModified(String, UserHandle,NotificationChannelGroup, int)}
+ * - the provided object was updated.
*/
public static final int NOTIFICATION_CHANNEL_OR_GROUP_UPDATED = 2;
/**
* Channel or group modification reason provided to
- * {@link #onNotificationChannelModified(String, NotificationChannel, int)} or
- * {@link #onNotificationChannelGroupModified(String, NotificationChannelGroup, int)}- the
- * provided object was deleted.
+ * {@link #onNotificationChannelModified(String, UserHandle, NotificationChannel, int)} or
+ * {@link #onNotificationChannelGroupModified(String, UserHandle, NotificationChannelGroup,
+ * int)}- the provided object was deleted.
*/
public static final int NOTIFICATION_CHANNEL_OR_GROUP_DELETED = 3;
@@ -432,13 +433,14 @@ public abstract class NotificationListenerService extends Service {
* device} in order to receive this callback.
*
* @param pkg The package the channel belongs to.
+ * @param user The user on which the change was made.
* @param channel The channel that has changed.
* @param modificationType One of {@link #NOTIFICATION_CHANNEL_OR_GROUP_ADDED},
* {@link #NOTIFICATION_CHANNEL_OR_GROUP_UPDATED},
* {@link #NOTIFICATION_CHANNEL_OR_GROUP_DELETED}.
*/
- public void onNotificationChannelModified(String pkg, NotificationChannel channel,
- @ChannelOrGroupModificationTypes int modificationType) {
+ public void onNotificationChannelModified(String pkg, UserHandle user,
+ NotificationChannel channel, @ChannelOrGroupModificationTypes int modificationType) {
// optional
}
@@ -449,13 +451,14 @@ public abstract class NotificationListenerService extends Service {
* device} in order to receive this callback.
*
* @param pkg The package the group belongs to.
+ * @param user The user on which the change was made.
* @param group The group that has changed.
* @param modificationType One of {@link #NOTIFICATION_CHANNEL_OR_GROUP_ADDED},
* {@link #NOTIFICATION_CHANNEL_OR_GROUP_UPDATED},
* {@link #NOTIFICATION_CHANNEL_OR_GROUP_DELETED}.
*/
- public void onNotificationChannelGroupModified(String pkg, NotificationChannelGroup group,
- @ChannelOrGroupModificationTypes int modificationType) {
+ public void onNotificationChannelGroupModified(String pkg, UserHandle user,
+ NotificationChannelGroup group, @ChannelOrGroupModificationTypes int modificationType) {
// optional
}
@@ -661,21 +664,24 @@ public abstract class NotificationListenerService extends Service {
/**
- * Updates a notification channel for a given package. This should only be used to reflect
- * changes a user has made to the channel via the listener's user interface.
+ * Updates a notification channel for a given package for a given user. This should only be used
+ * to reflect changes a user has made to the channel via the listener's user interface.
*
+ * <p>This method will throw a security exception if you don't have access to notifications
+ * for the given user.</p>
* <p>The caller must have {@link CompanionDeviceManager#getAssociations() an associated
* device} in order to use this method.
*
* @param pkg The package the channel belongs to.
+ * @param user The user the channel belongs to.
* @param channel the channel to update.
*/
- public final void updateNotificationChannel(@NonNull String pkg,
+ public final void updateNotificationChannel(@NonNull String pkg, @NonNull UserHandle user,
@NonNull NotificationChannel channel) {
if (!isBound()) return;
try {
getNotificationInterface().updateNotificationChannelFromPrivilegedListener(
- mWrapper, pkg, channel);
+ mWrapper, pkg, user, channel);
} catch (RemoteException e) {
Log.v(TAG, "Unable to contact notification manager", e);
throw e.rethrowFromSystemServer();
@@ -683,19 +689,22 @@ public abstract class NotificationListenerService extends Service {
}
/**
- * Returns all notification channels belonging to the given package.
+ * Returns all notification channels belonging to the given package for a given user.
*
+ * <p>This method will throw a security exception if you don't have access to notifications
+ * for the given user.</p>
* <p>The caller must have {@link CompanionDeviceManager#getAssociations() an associated
* device} in order to use this method.
*
* @param pkg The package to retrieve channels for.
*/
- public final List<NotificationChannel> getNotificationChannels(@NonNull String pkg) {
+ public final List<NotificationChannel> getNotificationChannels(@NonNull String pkg,
+ @NonNull UserHandle user) {
if (!isBound()) return null;
try {
return getNotificationInterface().getNotificationChannelsFromPrivilegedListener(
- mWrapper, pkg).getList();
+ mWrapper, pkg, user).getList();
} catch (RemoteException e) {
Log.v(TAG, "Unable to contact notification manager", e);
throw e.rethrowFromSystemServer();
@@ -703,19 +712,22 @@ public abstract class NotificationListenerService extends Service {
}
/**
- * Returns all notification channel groups belonging to the given package.
+ * Returns all notification channel groups belonging to the given package for a given user.
*
+ * <p>This method will throw a security exception if you don't have access to notifications
+ * for the given user.</p>
* <p>The caller must have {@link CompanionDeviceManager#getAssociations() an associated
* device} in order to use this method.
*
* @param pkg The package to retrieve channel groups for.
*/
- public final List<NotificationChannelGroup> getNotificationChannelGroups(@NonNull String pkg) {
+ public final List<NotificationChannelGroup> getNotificationChannelGroups(@NonNull String pkg,
+ @NonNull UserHandle user) {
if (!isBound()) return null;
try {
return getNotificationInterface().getNotificationChannelGroupsFromPrivilegedListener(
- mWrapper, pkg).getList();
+ mWrapper, pkg, user).getList();
} catch (RemoteException e) {
Log.v(TAG, "Unable to contact notification manager", e);
throw e.rethrowFromSystemServer();
@@ -1252,24 +1264,27 @@ public abstract class NotificationListenerService extends Service {
}
@Override
- public void onNotificationChannelModification(String pkgName, NotificationChannel channel,
+ public void onNotificationChannelModification(String pkgName, UserHandle user,
+ NotificationChannel channel,
@ChannelOrGroupModificationTypes int modificationType) {
SomeArgs args = SomeArgs.obtain();
args.arg1 = pkgName;
- args.arg2 = channel;
- args.arg3 = modificationType;
+ args.arg2 = user;
+ args.arg3 = channel;
+ args.arg4 = modificationType;
mHandler.obtainMessage(
MyHandler.MSG_ON_NOTIFICATION_CHANNEL_MODIFIED, args).sendToTarget();
}
@Override
- public void onNotificationChannelGroupModification(String pkgName,
+ public void onNotificationChannelGroupModification(String pkgName, UserHandle user,
NotificationChannelGroup group,
@ChannelOrGroupModificationTypes int modificationType) {
SomeArgs args = SomeArgs.obtain();
args.arg1 = pkgName;
- args.arg2 = group;
- args.arg3 = modificationType;
+ args.arg2 = user;
+ args.arg3 = group;
+ args.arg4 = modificationType;
mHandler.obtainMessage(
MyHandler.MSG_ON_NOTIFICATION_CHANNEL_GROUP_MODIFIED, args).sendToTarget();
}
@@ -1841,17 +1856,19 @@ public abstract class NotificationListenerService extends Service {
case MSG_ON_NOTIFICATION_CHANNEL_MODIFIED: {
SomeArgs args = (SomeArgs) msg.obj;
String pkgName = (String) args.arg1;
- NotificationChannel channel = (NotificationChannel) args.arg2;
- int modificationType = (int) args.arg3;
- onNotificationChannelModified(pkgName, channel, modificationType);
+ UserHandle user= (UserHandle) args.arg2;
+ NotificationChannel channel = (NotificationChannel) args.arg3;
+ int modificationType = (int) args.arg4;
+ onNotificationChannelModified(pkgName, user, channel, modificationType);
} break;
case MSG_ON_NOTIFICATION_CHANNEL_GROUP_MODIFIED: {
SomeArgs args = (SomeArgs) msg.obj;
String pkgName = (String) args.arg1;
- NotificationChannelGroup group = (NotificationChannelGroup) args.arg2;
- int modificationType = (int) args.arg3;
- onNotificationChannelGroupModified(pkgName, group, modificationType);
+ UserHandle user = (UserHandle) args.arg2;
+ NotificationChannelGroup group = (NotificationChannelGroup) args.arg3;
+ int modificationType = (int) args.arg4;
+ onNotificationChannelGroupModified(pkgName, user, group, modificationType);
} break;
}
}