blob: 948546b184736861baddcc6d4643e68dbbcaa8fe [file] [log] [blame]
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08001/* //device/java/android/android/app/INotificationManager.aidl
2**
3** Copyright 2007, The Android Open Source Project
4**
Geoffrey Pitsche75a66e2016-11-22 11:12:11 -05005** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
The Android Open Source Project9066cfe2009-03-03 19:31:44 -08008**
Geoffrey Pitsche75a66e2016-11-22 11:12:11 -05009** http://www.apache.org/licenses/LICENSE-2.0
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080010**
Geoffrey Pitsche75a66e2016-11-22 11:12:11 -050011** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080015** limitations under the License.
16*/
17
18package android.app;
19
20import android.app.ITransientNotification;
Bernardo Rufinoab338ac2019-12-20 18:35:30 +000021import android.app.ITransientNotificationCallback;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080022import android.app.Notification;
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040023import android.app.NotificationChannel;
Geoffrey Pitschdf44b602017-02-03 13:31:50 -050024import android.app.NotificationChannelGroup;
Julia Reynoldsb317ff72019-11-26 14:20:51 -050025import android.app.NotificationHistory;
John Spurlock1fc476d2015-04-14 16:05:20 -040026import android.app.NotificationManager;
Daniel Sandler5feceeb2013-03-22 18:29:23 -070027import android.content.ComponentName;
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080028import android.content.Intent;
Christoph Studercee44ba2014-05-20 18:36:43 +020029import android.content.pm.ParceledListSlice;
John Spurlocke77bb362014-04-26 10:24:59 -040030import android.net.Uri;
John Spurlock2b122f42014-08-27 16:29:47 -040031import android.os.Bundle;
Julia Reynoldsf27d6b22017-04-13 15:48:16 -040032import android.os.UserHandle;
Julia Reynoldse46bb372016-03-17 11:05:58 -040033import android.service.notification.Adjustment;
John Spurlock7340fc82014-04-24 18:50:12 -040034import android.service.notification.Condition;
John Spurlocke77bb362014-04-26 10:24:59 -040035import android.service.notification.IConditionListener;
John Spurlock7340fc82014-04-24 18:50:12 -040036import android.service.notification.IConditionProvider;
Daniel Sandler5feceeb2013-03-22 18:29:23 -070037import android.service.notification.INotificationListener;
John Spurlocke77bb362014-04-26 10:24:59 -040038import android.service.notification.StatusBarNotification;
Julia Reynoldsa47a27f2015-08-24 08:31:47 -040039import android.app.AutomaticZenRule;
John Spurlock056c5192014-04-20 21:52:01 -040040import android.service.notification.ZenModeConfig;
Daniel Sandlerfde19b12013-01-17 00:21:05 -050041
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080042/** {@hide} */
43interface INotificationManager
44{
Andrei Onea4b2116c2019-02-28 15:13:42 +000045 @UnsupportedAppUsage
Dianne Hackborn41203752012-08-31 14:05:51 -070046 void cancelAllNotifications(String pkg, int userId);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -080047
Julia Reynolds5355e852017-02-07 14:54:13 -050048 void clearData(String pkg, int uid, boolean fromApp);
Bernardo Rufinoab338ac2019-12-20 18:35:30 +000049 void enqueueTextToast(String pkg, IBinder token, CharSequence text, int duration, int displayId, @nullable ITransientNotificationCallback callback);
Bernardo Rufino52af6db2019-12-20 18:26:07 +000050 void enqueueToast(String pkg, IBinder token, ITransientNotification callback, int duration, int displayId);
Bernardo Rufino2f167d32020-02-04 22:32:34 +000051 // TODO(b/144152069): Remove this after assessing impact on dogfood.
52 void enqueueTextOrCustomToast(String pkg, IBinder token, ITransientNotification callback, int duration, int displayId, boolean isCustom);
Bernardo Rufino52af6db2019-12-20 18:26:07 +000053 void cancelToast(String pkg, IBinder token);
54 void finishToken(String pkg, IBinder token);
Robert Carr997427342018-02-28 18:06:10 -080055
Christoph Studer8fd7f1e2014-04-11 17:35:05 -040056 void enqueueNotificationWithTag(String pkg, String opPkg, String tag, int id,
Julia Reynoldsfea6f7b2017-04-19 13:50:12 -040057 in Notification notification, int userId);
Andrei Onea4b2116c2019-02-28 15:13:42 +000058 @UnsupportedAppUsage
Julia Reynoldse4a47dd2019-06-07 13:40:59 -040059 void cancelNotificationWithTag(String pkg, String opPkg, String tag, int id, int userId);
Daniel Sandler0da673f2012-04-11 12:33:16 -040060
Julia Reynolds924eed12017-01-19 09:52:07 -050061 void setShowBadge(String pkg, int uid, boolean showBadge);
62 boolean canShowBadge(String pkg, int uid);
Daniel Sandler4a900ac2013-01-30 14:04:10 -050063 void setNotificationsEnabledForPackage(String pkg, int uid, boolean enabled);
Rohan Shah590e1b22018-04-10 23:48:47 -040064 /**
65 * Updates the notification's enabled state. Additionally locks importance for all of the
66 * notifications belonging to the app, such that future notifications aren't reconsidered for
67 * blocking helper.
68 */
69 void setNotificationsEnabledWithImportanceLockForPackage(String pkg, int uid, boolean enabled);
70
Andrei Onea4b2116c2019-02-28 15:13:42 +000071 @UnsupportedAppUsage
Daniel Sandler4a900ac2013-01-30 14:04:10 -050072 boolean areNotificationsEnabledForPackage(String pkg, int uid);
Julia Reynolds81afbcd2016-02-09 14:54:08 -050073 boolean areNotificationsEnabled(String pkg);
Julia Reynoldsef37f282016-02-12 09:11:27 -050074 int getPackageImportance(String pkg);
Chris Wren3ad4e3a2014-09-02 17:23:51 -040075
Julia Reynolds088c4482019-04-10 12:43:27 -040076 List<String> getAllowedAssistantAdjustments(String pkg);
77 void allowAssistantAdjustment(String adjustmentType);
78 void disallowAssistantAdjustment(String adjustmentType);
Julia Reynoldsad6dd352019-03-07 16:46:22 -050079
Julia Reynolds12ad7ca2019-01-28 09:29:16 -050080 boolean shouldHideSilentStatusIcons(String callingPkg);
81 void setHideSilentStatusIcons(boolean hide);
82
Mady Mellorc39b4ae2019-01-09 17:11:37 -080083 void setBubblesAllowed(String pkg, int uid, boolean allowed);
84 boolean areBubblesAllowed(String pkg);
85 boolean areBubblesAllowedForPackage(String pkg, int uid);
Mady Mellor9db685a2019-01-23 13:23:37 -080086 boolean hasUserApprovedBubblesForPackage(String pkg, int uid);
Julia Reynolds33ab8a02018-12-17 16:19:52 -050087
Julia Reynolds59e152e2017-01-25 17:42:53 -050088 void createNotificationChannelGroups(String pkg, in ParceledListSlice channelGroupList);
Geoffrey Pitsch03533712017-01-05 10:30:07 -050089 void createNotificationChannels(String pkg, in ParceledListSlice channelsList);
Geoffrey Pitsch3560f842017-03-22 16:42:43 -040090 void createNotificationChannelsForPackage(String pkg, int uid, in ParceledListSlice channelsList);
Julia Reynolds02971452020-02-14 16:44:19 -050091 ParceledListSlice getConversations(boolean onlyImportant);
Julia Reynolds882f2062020-02-05 12:11:38 -050092 ParceledListSlice getConversationsForPackage(String pkg, int uid);
Julia Reynolds59e152e2017-01-25 17:42:53 -050093 ParceledListSlice getNotificationChannelGroupsForPackage(String pkg, int uid, boolean includeDeleted);
Geoffrey Pitschdf44b602017-02-03 13:31:50 -050094 NotificationChannelGroup getNotificationChannelGroupForPackage(String groupId, String pkg, int uid);
Julia Reynolds005c8b92017-08-24 10:35:53 -040095 NotificationChannelGroup getPopulatedNotificationChannelGroupForPackage(String pkg, int uid, String groupId, boolean includeDeleted);
96 void updateNotificationChannelGroupForPackage(String pkg, int uid, in NotificationChannelGroup group);
Julia Reynoldsb5e44b72016-08-16 15:00:25 -040097 void updateNotificationChannelForPackage(String pkg, int uid, in NotificationChannel channel);
Julia Reynoldsb4a9e9c2019-03-20 15:46:08 -040098 NotificationChannel getNotificationChannel(String callingPkg, int userId, String pkg, String channelId);
Julia Reynolds12ba4cf2020-01-10 16:01:38 -050099 NotificationChannel getConversationNotificationChannel(String callingPkg, int userId, String pkg, String channelId, boolean returnParentIfNoConversationChannel, String conversationId);
Julia Reynolds7c267522020-01-16 11:26:41 -0500100 void createConversationNotificationChannelForPackage(String pkg, int uid, String triggeringKey, in NotificationChannel parentChannel, String conversationId);
Julia Reynolds882f2062020-02-05 12:11:38 -0500101 NotificationChannel getNotificationChannelForPackage(String pkg, int uid, String channelId, String conversationId, boolean includeDeleted);
Julia Reynoldsb5e44b72016-08-16 15:00:25 -0400102 void deleteNotificationChannel(String pkg, String channelId);
Julia Reynolds0f767342019-12-18 09:11:55 -0500103 void deleteConversationNotificationChannels(String pkg, int uid, String conversationId);
Julia Reynoldsb4a9e9c2019-03-20 15:46:08 -0400104 ParceledListSlice getNotificationChannels(String callingPkg, String targetPkg, int userId);
Julia Reynolds4036e8d2017-01-13 09:50:05 -0500105 ParceledListSlice getNotificationChannelsForPackage(String pkg, int uid, boolean includeDeleted);
Geoffrey Pitschdf44b602017-02-03 13:31:50 -0500106 int getNumNotificationChannelsForPackage(String pkg, int uid, boolean includeDeleted);
Julia Reynolds41103f42017-03-15 11:36:35 -0400107 int getDeletedChannelCount(String pkg, int uid);
Julia Reynoldsf2e499d2018-03-30 10:36:42 -0400108 int getBlockedChannelCount(String pkg, int uid);
Julia Reynolds9bfba592017-03-15 14:03:55 -0400109 void deleteNotificationChannelGroup(String pkg, String channelGroupId);
Julia Reynolds3eb3ffd2017-11-16 10:11:32 -0500110 NotificationChannelGroup getNotificationChannelGroup(String pkg, String channelGroupId);
Julia Reynolds9bfba592017-03-15 14:03:55 -0400111 ParceledListSlice getNotificationChannelGroups(String pkg);
Julia Reynolds17717f52017-05-09 11:46:06 -0400112 boolean onlyHasDefaultChannel(String pkg, int uid);
Julia Reynoldse273f082018-04-12 13:48:49 -0400113 int getBlockedAppCount(int userId);
Beverly86d076f2018-04-17 14:44:52 -0400114 boolean areChannelsBypassingDnd();
Beverly0479cde22018-11-09 11:05:34 -0500115 int getAppsBypassingDndCount(int uid);
116 ParceledListSlice getNotificationChannelsBypassingDnd(String pkg, int userId);
Julia Reynoldsb40cd092019-01-25 09:35:02 -0500117 boolean isPackagePaused(String pkg);
Julia Reynoldsb1a77182020-02-06 16:38:10 -0500118 void deleteNotificationHistoryItem(String pkg, int uid, long postedTime);
Julia Reynoldsb5e44b72016-08-16 15:00:25 -0400119
Julia Reynoldsdeb2d0b2019-06-17 15:34:26 -0400120 void silenceNotificationSound();
121
Christoph Studercee44ba2014-05-20 18:36:43 +0200122 // TODO: Remove this when callers have been migrated to the equivalent
123 // INotificationListener method.
Andrei Onea4b2116c2019-02-28 15:13:42 +0000124 @UnsupportedAppUsage
Daniel Sandlerfde19b12013-01-17 00:21:05 -0500125 StatusBarNotification[] getActiveNotifications(String callingPkg);
Andrei Onea4b2116c2019-02-28 15:13:42 +0000126 @UnsupportedAppUsage
Julia Reynolds27e26442020-02-11 11:31:35 -0500127 StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count, boolean includeSnoozed);
Daniel Sandler09a247e2013-02-14 10:24:17 -0500128
Julia Reynoldsb317ff72019-11-26 14:20:51 -0500129 NotificationHistory getNotificationHistory(String callingPkg);
130
Chris Wren0efdb882016-03-01 17:17:47 -0500131 void registerListener(in INotificationListener listener, in ComponentName component, int userid);
Daniel Sandler09a247e2013-02-14 10:24:17 -0500132 void unregisterListener(in INotificationListener listener, int userid);
The Android Open Source Project9066cfe2009-03-03 19:31:44 -0800133
Daniel Sandlere6f7f2e2013-04-25 15:44:16 -0400134 void cancelNotificationFromListener(in INotificationListener token, String pkg, String tag, int id);
John Spurlocka4294292014-03-24 18:02:32 -0400135 void cancelNotificationsFromListener(in INotificationListener token, in String[] keys);
Daniel Sandler25cf8ce2013-04-24 15:34:57 -0400136
Julia Reynolds79672302017-01-12 08:30:16 -0500137 void snoozeNotificationUntilContextFromListener(in INotificationListener token, String key, String snoozeCriterionId);
Julia Reynoldsb6c1f992016-11-22 09:26:46 -0500138 void snoozeNotificationUntilFromListener(in INotificationListener token, String key, long until);
Julia Reynolds72f1cbb2016-09-19 14:57:31 -0400139
Chris Wrenab41eec2016-01-04 18:01:27 -0500140 void requestBindListener(in ComponentName component);
141 void requestUnbindListener(in INotificationListener token);
Julia Reynolds38e6ca42016-08-08 08:38:09 -0400142 void requestBindProvider(in ComponentName component);
143 void requestUnbindProvider(in IConditionProvider token);
Chris Wrenab41eec2016-01-04 18:01:27 -0500144
Amith Yamasanif47e51e2015-04-17 10:02:15 -0700145 void setNotificationsShownFromListener(in INotificationListener token, in String[] keys);
146
Christoph Studerb82bc782014-08-20 14:29:43 +0200147 ParceledListSlice getActiveNotificationsFromListener(in INotificationListener token, in String[] keys, int trim);
Julia Reynoldscf63ff12017-01-24 13:55:48 -0500148 ParceledListSlice getSnoozedNotificationsFromListener(in INotificationListener token, int trim);
Julia Reynolds4703bac2018-09-12 10:39:30 -0400149 void clearRequestedListenerHints(in INotificationListener token);
John Spurlockd8afe3c2014-08-01 14:04:07 -0400150 void requestHintsFromListener(in INotificationListener token, int hints);
151 int getHintsFromListener(in INotificationListener token);
Christoph Studer85a384b2014-08-27 20:16:15 +0200152 void requestInterruptionFilterFromListener(in INotificationListener token, int interruptionFilter);
153 int getInterruptionFilterFromListener(in INotificationListener token);
Christoph Studerb82bc782014-08-20 14:29:43 +0200154 void setOnNotificationPostedTrimFromListener(in INotificationListener token, int trim);
John Spurlock80774932015-05-07 17:38:50 -0400155 void setInterruptionFilter(String pkg, int interruptionFilter);
John Spurlock056c5192014-04-20 21:52:01 -0400156
Julia Reynolds005c8b92017-08-24 10:35:53 -0400157 void updateNotificationChannelGroupFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user, in NotificationChannelGroup group);
Julia Reynoldsf27d6b22017-04-13 15:48:16 -0400158 void updateNotificationChannelFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user, in NotificationChannel channel);
159 ParceledListSlice getNotificationChannelsFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user);
160 ParceledListSlice getNotificationChannelGroupsFromPrivilegedListener(in INotificationListener token, String pkg, in UserHandle user);
Julia Reynolds73ed76b2017-04-04 17:04:38 -0400161
Julia Reynolds4b82f6d2017-01-04 10:47:41 -0500162 void applyEnqueuedAdjustmentFromAssistant(in INotificationListener token, in Adjustment adjustment);
Julia Reynolds52e64d02016-12-09 15:36:12 -0500163 void applyAdjustmentFromAssistant(in INotificationListener token, in Adjustment adjustment);
164 void applyAdjustmentsFromAssistant(in INotificationListener token, in List<Adjustment> adjustments);
Julia Reynoldscf63ff12017-01-24 13:55:48 -0500165 void unsnoozeNotificationFromAssistant(in INotificationListener token, String key);
Julia Reynolds0d073782020-02-13 16:07:52 -0500166 void unsnoozeNotificationFromSystemListener(in INotificationListener token, String key);
Chris Wren51017d02015-12-15 15:34:46 -0500167
John Spurlockb4782522014-08-22 14:54:46 -0400168 ComponentName getEffectsSuppressor();
John Spurlock2b122f42014-08-27 16:29:47 -0400169 boolean matchesCallFilter(in Bundle extras);
John Spurlock530052a2014-11-30 16:26:19 -0500170 boolean isSystemConditionProviderEnabled(String path);
John Spurlockb4782522014-08-22 14:54:46 -0400171
Julia Reynoldsb852e562017-06-06 16:14:18 -0400172 boolean isNotificationListenerAccessGranted(in ComponentName listener);
173 boolean isNotificationListenerAccessGrantedForUser(in ComponentName listener, int userId);
174 boolean isNotificationAssistantAccessGranted(in ComponentName assistant);
175 void setNotificationListenerAccessGranted(in ComponentName listener, boolean enabled);
176 void setNotificationAssistantAccessGranted(in ComponentName assistant, boolean enabled);
177 void setNotificationListenerAccessGrantedForUser(in ComponentName listener, int userId, boolean enabled);
178 void setNotificationAssistantAccessGrantedForUser(in ComponentName assistant, int userId, boolean enabled);
179 List<String> getEnabledNotificationListenerPackages();
180 List<ComponentName> getEnabledNotificationListeners(int userId);
Fabian Kozynskid9425662019-01-29 13:08:30 -0500181 ComponentName getAllowedNotificationAssistantForUser(int userId);
182 ComponentName getAllowedNotificationAssistant();
Julia Reynoldsb852e562017-06-06 16:14:18 -0400183
Andrei Onea4b2116c2019-02-28 15:13:42 +0000184 @UnsupportedAppUsage
John Spurlockb2278d62015-04-07 12:47:12 -0400185 int getZenMode();
Andrei Onea4b2116c2019-02-28 15:13:42 +0000186 @UnsupportedAppUsage
John Spurlock056c5192014-04-20 21:52:01 -0400187 ZenModeConfig getZenModeConfig();
Beverlyff2df9b2018-10-10 16:54:10 -0400188 NotificationManager.Policy getConsolidatedNotificationPolicy();
John Spurlockb2278d62015-04-07 12:47:12 -0400189 oneway void setZenMode(int mode, in Uri conditionId, String reason);
John Spurlocke77bb362014-04-26 10:24:59 -0400190 oneway void notifyConditions(String pkg, in IConditionProvider provider, in Condition[] conditions);
John Spurlock80774932015-05-07 17:38:50 -0400191 boolean isNotificationPolicyAccessGranted(String pkg);
192 NotificationManager.Policy getNotificationPolicy(String pkg);
193 void setNotificationPolicy(String pkg, in NotificationManager.Policy policy);
John Spurlock80774932015-05-07 17:38:50 -0400194 boolean isNotificationPolicyAccessGrantedForPackage(String pkg);
195 void setNotificationPolicyAccessGranted(String pkg, boolean granted);
Julia Reynolds92febc32017-10-26 11:30:31 -0400196 void setNotificationPolicyAccessGrantedForUser(String pkg, int userId, boolean granted);
Julia Reynolds4fe98d62015-10-06 16:23:41 -0400197 AutomaticZenRule getAutomaticZenRule(String id);
Julia Reynolds361e82d32016-02-26 18:19:49 -0500198 List<ZenModeConfig.ZenRule> getZenRules();
199 String addAutomaticZenRule(in AutomaticZenRule automaticZenRule);
200 boolean updateAutomaticZenRule(String id, in AutomaticZenRule automaticZenRule);
Julia Reynolds4fe98d62015-10-06 16:23:41 -0400201 boolean removeAutomaticZenRule(String id);
Julia Reynoldsc8e54e82015-11-30 16:43:05 -0500202 boolean removeAutomaticZenRules(String packageName);
Julia Reynolds43b70cd2016-01-14 15:05:34 -0500203 int getRuleInstanceCount(in ComponentName owner);
Julia Reynolds68062072018-08-06 15:38:21 -0400204 void setAutomaticZenRuleState(String id, in Condition condition);
Christopher Tatef9767d62015-04-08 14:35:43 -0700205
206 byte[] getBackupPayload(int user);
207 void applyRestore(in byte[] payload, int user);
Dan Sandler994349c2015-04-15 11:02:54 -0400208
209 ParceledListSlice getAppActiveNotifications(String callingPkg, int userId);
Julia Reynoldsa7ba45a2018-08-29 09:07:52 -0400210
211 void setNotificationDelegate(String callingPkg, String delegate);
Julia Reynoldsa7ba45a2018-08-29 09:07:52 -0400212 String getNotificationDelegate(String callingPkg);
Julia Reynolds7a6d07a2019-03-18 11:31:56 -0400213 boolean canNotifyAsPackage(String callingPkg, String targetPkg, int userId);
Zimuzob3b9c262018-10-31 11:54:20 +0000214
215 void setPrivateNotificationsAllowed(boolean allow);
216 boolean getPrivateNotificationsAllowed();
Chris Wrencdea3b72019-11-22 16:58:17 -0500217
218 long pullStats(long startNs, int report, boolean doAgg, out List<ParcelFileDescriptor> stats);
Dan Sandlerea75fdd2014-08-12 12:29:19 -0400219}