Loading api/current.txt +5 −0 Original line number Diff line number Diff line Loading @@ -5837,6 +5837,7 @@ package android.app { method public void enableLights(boolean); method public void enableVibration(boolean); method public android.media.AudioAttributes getAudioAttributes(); method @Nullable public String getConversationId(); method public String getDescription(); method public String getGroup(); method public String getId(); Loading @@ -5844,12 +5845,14 @@ package android.app { method public int getLightColor(); method public int getLockscreenVisibility(); method public CharSequence getName(); method @Nullable public String getParentChannelId(); method public android.net.Uri getSound(); method public long[] getVibrationPattern(); method public boolean hasUserSetImportance(); method public boolean hasUserSetSound(); method public void setAllowBubbles(boolean); method public void setBypassDnd(boolean); method public void setConversationId(@Nullable String, @Nullable String); method public void setDescription(String); method public void setGroup(String); method public void setImportance(int); Loading @@ -5862,6 +5865,7 @@ package android.app { method public boolean shouldShowLights(); method public boolean shouldVibrate(); method public void writeToParcel(android.os.Parcel, int); field public static final String CONVERSATION_CHANNEL_ID_FORMAT = "%1$s : %2$s"; field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationChannel> CREATOR; field public static final String DEFAULT_CHANNEL_ID = "miscellaneous"; } Loading Loading @@ -5903,6 +5907,7 @@ package android.app { method public final int getCurrentInterruptionFilter(); method public int getImportance(); method public android.app.NotificationChannel getNotificationChannel(String); method @Nullable public android.app.NotificationChannel getNotificationChannel(@NonNull String, @NonNull String); method public android.app.NotificationChannelGroup getNotificationChannelGroup(String); method public java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups(); method public java.util.List<android.app.NotificationChannel> getNotificationChannels(); core/java/android/app/INotificationManager.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -94,8 +94,11 @@ interface INotificationManager void updateNotificationChannelGroupForPackage(String pkg, int uid, in NotificationChannelGroup group); void updateNotificationChannelForPackage(String pkg, int uid, in NotificationChannel channel); NotificationChannel getNotificationChannel(String callingPkg, int userId, String pkg, String channelId); NotificationChannel getConversationNotificationChannel(String callingPkg, int userId, String pkg, String channelId, String conversationId); void createConversationNotificationChannelForPackage(String pkg, int uid, in NotificationChannel parentChannel, String conversationId); NotificationChannel getNotificationChannelForPackage(String pkg, int uid, String channelId, boolean includeDeleted); void deleteNotificationChannel(String pkg, String channelId); void deleteConversationNotificationChannels(String pkg, int uid, String conversationId); ParceledListSlice getNotificationChannels(String callingPkg, String targetPkg, int userId); ParceledListSlice getNotificationChannelsForPackage(String pkg, int uid, boolean includeDeleted); int getNumNotificationChannelsForPackage(String pkg, int uid, boolean includeDeleted); Loading core/java/android/app/NotificationChannel.java +88 −25 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.compat.annotation.UnsupportedAppUsage; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.ShortcutInfo; import android.media.AudioAttributes; import android.net.Uri; import android.os.Parcel; Loading Loading @@ -56,6 +57,22 @@ public final class NotificationChannel implements Parcelable { */ public static final String DEFAULT_CHANNEL_ID = "miscellaneous"; /** * The formatter used by the system to create an id for notification * channels when it automatically creates conversation channels on behalf of an app. The format * string takes two arguments, in this order: the * {@link #getId()} of the original notification channel, and the * {@link ShortcutInfo#getId() id} of the conversation. */ public static final String CONVERSATION_CHANNEL_ID_FORMAT = "%1$s : %2$s"; /** * TODO: STOPSHIP remove * Conversation id to use for apps that aren't providing them yet. * @hide */ public static final String PLACEHOLDER_CONVERSATION_ID = "placeholder_id"; /** * The maximum length for text fields in a NotificationChannel. Fields will be truncated at this * limit. Loading Loading @@ -85,6 +102,8 @@ public final class NotificationChannel implements Parcelable { private static final String ATT_BLOCKABLE_SYSTEM = "blockable_system"; private static final String ATT_ALLOW_BUBBLE = "can_bubble"; private static final String ATT_ORIG_IMP = "orig_imp"; private static final String ATT_PARENT_CHANNEL = "parent"; private static final String ATT_CONVERSATION_ID = "conv_id"; private static final String DELIMITER = ","; /** Loading Loading @@ -147,7 +166,7 @@ public final class NotificationChannel implements Parcelable { private static final boolean DEFAULT_ALLOW_BUBBLE = true; @UnsupportedAppUsage private final String mId; private String mId; private String mName; private String mDesc; private int mImportance = DEFAULT_IMPORTANCE; Loading @@ -172,6 +191,8 @@ public final class NotificationChannel implements Parcelable { private boolean mAllowBubbles = DEFAULT_ALLOW_BUBBLE; private boolean mImportanceLockedByOEM; private boolean mImportanceLockedDefaultApp; private String mParentId = null; private String mConversationId = null; /** * Creates a notification channel. Loading Loading @@ -236,6 +257,8 @@ public final class NotificationChannel implements Parcelable { mAllowBubbles = in.readBoolean(); mImportanceLockedByOEM = in.readBoolean(); mOriginalImportance = in.readInt(); mParentId = in.readString(); mConversationId = in.readString(); } @Override Loading Loading @@ -291,6 +314,8 @@ public final class NotificationChannel implements Parcelable { dest.writeBoolean(mAllowBubbles); dest.writeBoolean(mImportanceLockedByOEM); dest.writeInt(mOriginalImportance); dest.writeString(mParentId); dest.writeString(mConversationId); } /** Loading Loading @@ -362,6 +387,13 @@ public final class NotificationChannel implements Parcelable { // Modifiable by apps on channel creation. /** * @hide */ public void setId(String id) { mId = id; } /** * Sets what group this channel belongs to. * Loading Loading @@ -501,6 +533,23 @@ public final class NotificationChannel implements Parcelable { mAllowBubbles = allowBubbles; } /** * Sets this channel as being person-centric. Different settings and functionality may be * exposed for people-centric channels. * * @param parentChannelId The {@link #getId()} id} of the generic channel that notifications of * this type would be posted to in absence of a specific conversation id. * For example, if this channel represents 'Messages from Person A', the * parent channel would be 'Messages.' * @param conversationId The {@link ShortcutInfo#getId()} of the shortcut representing this * channel's conversation. */ public void setConversationId(@Nullable String parentChannelId, @Nullable String conversationId) { mParentId = parentChannelId; mConversationId = conversationId; } /** * Returns the id of this channel. */ Loading Loading @@ -621,6 +670,22 @@ public final class NotificationChannel implements Parcelable { return mAllowBubbles; } /** * Returns the {@link #getId() id} of the parent notification channel to this channel, if it's * a conversation related channel. See {@link #setConversationId(String, String)}. */ public @Nullable String getParentChannelId() { return mParentId; } /** * Returns the {@link ShortcutInfo#getId() id} of the conversation backing this channel, if it's * associated with a conversation. See {@link #setConversationId(String, String)}. */ public @Nullable String getConversationId() { return mConversationId; } /** * @hide */ Loading Loading @@ -761,6 +826,8 @@ public final class NotificationChannel implements Parcelable { setBlockableSystem(safeBool(parser, ATT_BLOCKABLE_SYSTEM, false)); setAllowBubbles(safeBool(parser, ATT_ALLOW_BUBBLE, DEFAULT_ALLOW_BUBBLE)); setOriginalImportance(safeInt(parser, ATT_ORIG_IMP, DEFAULT_IMPORTANCE)); setConversationId(parser.getAttributeValue(ATT_PARENT_CHANNEL, null), parser.getAttributeValue(ATT_CONVERSATION_ID, null)); } @Nullable Loading Loading @@ -885,6 +952,12 @@ public final class NotificationChannel implements Parcelable { if (getOriginalImportance() != DEFAULT_IMPORTANCE) { out.attribute(null, ATT_ORIG_IMP, Integer.toString(getOriginalImportance())); } if (getParentChannelId() != null) { out.attribute(null, ATT_PARENT_CHANNEL, getParentChannelId()); } if (getConversationId() != null) { out.attribute(null, ATT_CONVERSATION_ID, getConversationId()); } // mImportanceLockedDefaultApp and mImportanceLockedByOEM have a different source of // truth and so aren't written to this xml file Loading Loading @@ -1042,7 +1115,9 @@ public final class NotificationChannel implements Parcelable { && Objects.equals(getAudioAttributes(), that.getAudioAttributes()) && mImportanceLockedByOEM == that.mImportanceLockedByOEM && mImportanceLockedDefaultApp == that.mImportanceLockedDefaultApp && mOriginalImportance == that.mOriginalImportance; && mOriginalImportance == that.mOriginalImportance && Objects.equals(getParentChannelId(), that.getParentChannelId()) && Objects.equals(getConversationId(), that.getConversationId()); } @Override Loading @@ -1052,7 +1127,8 @@ public final class NotificationChannel implements Parcelable { getUserLockedFields(), isFgServiceShown(), mVibrationEnabled, mShowBadge, isDeleted(), getGroup(), getAudioAttributes(), isBlockableSystem(), mAllowBubbles, mImportanceLockedByOEM, mImportanceLockedDefaultApp, mOriginalImportance); mImportanceLockedByOEM, mImportanceLockedDefaultApp, mOriginalImportance, mParentId, mConversationId); result = 31 * result + Arrays.hashCode(mVibration); return result; } Loading @@ -1063,26 +1139,7 @@ public final class NotificationChannel implements Parcelable { String output = "NotificationChannel{" + "mId='" + mId + '\'' + ", mName=" + redactedName + ", mDescription=" + (!TextUtils.isEmpty(mDesc) ? "hasDescription " : "") + ", mImportance=" + mImportance + ", mBypassDnd=" + mBypassDnd + ", mLockscreenVisibility=" + mLockscreenVisibility + ", mSound=" + mSound + ", mLights=" + mLights + ", mLightColor=" + mLightColor + ", mVibration=" + Arrays.toString(mVibration) + ", mUserLockedFields=" + Integer.toHexString(mUserLockedFields) + ", mFgServiceShown=" + mFgServiceShown + ", mVibrationEnabled=" + mVibrationEnabled + ", mShowBadge=" + mShowBadge + ", mDeleted=" + mDeleted + ", mGroup='" + mGroup + '\'' + ", mAudioAttributes=" + mAudioAttributes + ", mBlockableSystem=" + mBlockableSystem + ", mAllowBubbles=" + mAllowBubbles + ", mImportanceLockedByOEM=" + mImportanceLockedByOEM + ", mImportanceLockedDefaultApp=" + mImportanceLockedDefaultApp + ", mOriginalImp=" + mOriginalImportance + getFieldsString() + '}'; pw.println(prefix + output); } Loading @@ -1092,7 +1149,12 @@ public final class NotificationChannel implements Parcelable { return "NotificationChannel{" + "mId='" + mId + '\'' + ", mName=" + mName + ", mDescription=" + (!TextUtils.isEmpty(mDesc) ? "hasDescription " : "") + getFieldsString() + '}'; } private String getFieldsString() { return ", mDescription=" + (!TextUtils.isEmpty(mDesc) ? "hasDescription " : "") + ", mImportance=" + mImportance + ", mBypassDnd=" + mBypassDnd + ", mLockscreenVisibility=" + mLockscreenVisibility Loading @@ -1112,7 +1174,8 @@ public final class NotificationChannel implements Parcelable { + ", mImportanceLockedByOEM=" + mImportanceLockedByOEM + ", mImportanceLockedDefaultApp=" + mImportanceLockedDefaultApp + ", mOriginalImp=" + mOriginalImportance + '}'; + ", mParent=" + mParentId + ", mConversationId" + mConversationId; } /** @hide */ Loading core/java/android/app/NotificationManager.java +19 −0 Original line number Diff line number Diff line Loading @@ -842,6 +842,25 @@ public class NotificationManager { } } /** * Returns the notification channel settings for a given channel and conversation id. * * <p>The channel must belong to your package, or to a package you are an approved notification * delegate for (see {@link #canNotifyAsPackage(String)}), or it will not be returned. To query * a channel as a notification delegate, call this method from a context created for that * package (see {@link Context#createPackageContext(String, int)}).</p> */ public @Nullable NotificationChannel getNotificationChannel(@NonNull String channelId, @NonNull String conversationId) { INotificationManager service = getService(); try { return service.getConversationNotificationChannel(mContext.getOpPackageName(), mContext.getUserId(), mContext.getPackageName(), channelId, conversationId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Returns all notification channels belonging to the calling package. * Loading services/core/java/com/android/server/notification/NotificationChannelExtractor.java +2 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,8 @@ public class NotificationChannelExtractor implements NotificationSignalExtractor } record.updateNotificationChannel(mConfig.getNotificationChannel(record.sbn.getPackageName(), record.sbn.getUid(), record.getChannel().getId(), false)); record.sbn.getUid(), record.getChannel().getId(), record.getNotification().getShortcutId(), false)); return null; } Loading Loading
api/current.txt +5 −0 Original line number Diff line number Diff line Loading @@ -5837,6 +5837,7 @@ package android.app { method public void enableLights(boolean); method public void enableVibration(boolean); method public android.media.AudioAttributes getAudioAttributes(); method @Nullable public String getConversationId(); method public String getDescription(); method public String getGroup(); method public String getId(); Loading @@ -5844,12 +5845,14 @@ package android.app { method public int getLightColor(); method public int getLockscreenVisibility(); method public CharSequence getName(); method @Nullable public String getParentChannelId(); method public android.net.Uri getSound(); method public long[] getVibrationPattern(); method public boolean hasUserSetImportance(); method public boolean hasUserSetSound(); method public void setAllowBubbles(boolean); method public void setBypassDnd(boolean); method public void setConversationId(@Nullable String, @Nullable String); method public void setDescription(String); method public void setGroup(String); method public void setImportance(int); Loading @@ -5862,6 +5865,7 @@ package android.app { method public boolean shouldShowLights(); method public boolean shouldVibrate(); method public void writeToParcel(android.os.Parcel, int); field public static final String CONVERSATION_CHANNEL_ID_FORMAT = "%1$s : %2$s"; field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationChannel> CREATOR; field public static final String DEFAULT_CHANNEL_ID = "miscellaneous"; } Loading Loading @@ -5903,6 +5907,7 @@ package android.app { method public final int getCurrentInterruptionFilter(); method public int getImportance(); method public android.app.NotificationChannel getNotificationChannel(String); method @Nullable public android.app.NotificationChannel getNotificationChannel(@NonNull String, @NonNull String); method public android.app.NotificationChannelGroup getNotificationChannelGroup(String); method public java.util.List<android.app.NotificationChannelGroup> getNotificationChannelGroups(); method public java.util.List<android.app.NotificationChannel> getNotificationChannels();
core/java/android/app/INotificationManager.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -94,8 +94,11 @@ interface INotificationManager void updateNotificationChannelGroupForPackage(String pkg, int uid, in NotificationChannelGroup group); void updateNotificationChannelForPackage(String pkg, int uid, in NotificationChannel channel); NotificationChannel getNotificationChannel(String callingPkg, int userId, String pkg, String channelId); NotificationChannel getConversationNotificationChannel(String callingPkg, int userId, String pkg, String channelId, String conversationId); void createConversationNotificationChannelForPackage(String pkg, int uid, in NotificationChannel parentChannel, String conversationId); NotificationChannel getNotificationChannelForPackage(String pkg, int uid, String channelId, boolean includeDeleted); void deleteNotificationChannel(String pkg, String channelId); void deleteConversationNotificationChannels(String pkg, int uid, String conversationId); ParceledListSlice getNotificationChannels(String callingPkg, String targetPkg, int userId); ParceledListSlice getNotificationChannelsForPackage(String pkg, int uid, boolean includeDeleted); int getNumNotificationChannelsForPackage(String pkg, int uid, boolean includeDeleted); Loading
core/java/android/app/NotificationChannel.java +88 −25 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import android.compat.annotation.UnsupportedAppUsage; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.ShortcutInfo; import android.media.AudioAttributes; import android.net.Uri; import android.os.Parcel; Loading Loading @@ -56,6 +57,22 @@ public final class NotificationChannel implements Parcelable { */ public static final String DEFAULT_CHANNEL_ID = "miscellaneous"; /** * The formatter used by the system to create an id for notification * channels when it automatically creates conversation channels on behalf of an app. The format * string takes two arguments, in this order: the * {@link #getId()} of the original notification channel, and the * {@link ShortcutInfo#getId() id} of the conversation. */ public static final String CONVERSATION_CHANNEL_ID_FORMAT = "%1$s : %2$s"; /** * TODO: STOPSHIP remove * Conversation id to use for apps that aren't providing them yet. * @hide */ public static final String PLACEHOLDER_CONVERSATION_ID = "placeholder_id"; /** * The maximum length for text fields in a NotificationChannel. Fields will be truncated at this * limit. Loading Loading @@ -85,6 +102,8 @@ public final class NotificationChannel implements Parcelable { private static final String ATT_BLOCKABLE_SYSTEM = "blockable_system"; private static final String ATT_ALLOW_BUBBLE = "can_bubble"; private static final String ATT_ORIG_IMP = "orig_imp"; private static final String ATT_PARENT_CHANNEL = "parent"; private static final String ATT_CONVERSATION_ID = "conv_id"; private static final String DELIMITER = ","; /** Loading Loading @@ -147,7 +166,7 @@ public final class NotificationChannel implements Parcelable { private static final boolean DEFAULT_ALLOW_BUBBLE = true; @UnsupportedAppUsage private final String mId; private String mId; private String mName; private String mDesc; private int mImportance = DEFAULT_IMPORTANCE; Loading @@ -172,6 +191,8 @@ public final class NotificationChannel implements Parcelable { private boolean mAllowBubbles = DEFAULT_ALLOW_BUBBLE; private boolean mImportanceLockedByOEM; private boolean mImportanceLockedDefaultApp; private String mParentId = null; private String mConversationId = null; /** * Creates a notification channel. Loading Loading @@ -236,6 +257,8 @@ public final class NotificationChannel implements Parcelable { mAllowBubbles = in.readBoolean(); mImportanceLockedByOEM = in.readBoolean(); mOriginalImportance = in.readInt(); mParentId = in.readString(); mConversationId = in.readString(); } @Override Loading Loading @@ -291,6 +314,8 @@ public final class NotificationChannel implements Parcelable { dest.writeBoolean(mAllowBubbles); dest.writeBoolean(mImportanceLockedByOEM); dest.writeInt(mOriginalImportance); dest.writeString(mParentId); dest.writeString(mConversationId); } /** Loading Loading @@ -362,6 +387,13 @@ public final class NotificationChannel implements Parcelable { // Modifiable by apps on channel creation. /** * @hide */ public void setId(String id) { mId = id; } /** * Sets what group this channel belongs to. * Loading Loading @@ -501,6 +533,23 @@ public final class NotificationChannel implements Parcelable { mAllowBubbles = allowBubbles; } /** * Sets this channel as being person-centric. Different settings and functionality may be * exposed for people-centric channels. * * @param parentChannelId The {@link #getId()} id} of the generic channel that notifications of * this type would be posted to in absence of a specific conversation id. * For example, if this channel represents 'Messages from Person A', the * parent channel would be 'Messages.' * @param conversationId The {@link ShortcutInfo#getId()} of the shortcut representing this * channel's conversation. */ public void setConversationId(@Nullable String parentChannelId, @Nullable String conversationId) { mParentId = parentChannelId; mConversationId = conversationId; } /** * Returns the id of this channel. */ Loading Loading @@ -621,6 +670,22 @@ public final class NotificationChannel implements Parcelable { return mAllowBubbles; } /** * Returns the {@link #getId() id} of the parent notification channel to this channel, if it's * a conversation related channel. See {@link #setConversationId(String, String)}. */ public @Nullable String getParentChannelId() { return mParentId; } /** * Returns the {@link ShortcutInfo#getId() id} of the conversation backing this channel, if it's * associated with a conversation. See {@link #setConversationId(String, String)}. */ public @Nullable String getConversationId() { return mConversationId; } /** * @hide */ Loading Loading @@ -761,6 +826,8 @@ public final class NotificationChannel implements Parcelable { setBlockableSystem(safeBool(parser, ATT_BLOCKABLE_SYSTEM, false)); setAllowBubbles(safeBool(parser, ATT_ALLOW_BUBBLE, DEFAULT_ALLOW_BUBBLE)); setOriginalImportance(safeInt(parser, ATT_ORIG_IMP, DEFAULT_IMPORTANCE)); setConversationId(parser.getAttributeValue(ATT_PARENT_CHANNEL, null), parser.getAttributeValue(ATT_CONVERSATION_ID, null)); } @Nullable Loading Loading @@ -885,6 +952,12 @@ public final class NotificationChannel implements Parcelable { if (getOriginalImportance() != DEFAULT_IMPORTANCE) { out.attribute(null, ATT_ORIG_IMP, Integer.toString(getOriginalImportance())); } if (getParentChannelId() != null) { out.attribute(null, ATT_PARENT_CHANNEL, getParentChannelId()); } if (getConversationId() != null) { out.attribute(null, ATT_CONVERSATION_ID, getConversationId()); } // mImportanceLockedDefaultApp and mImportanceLockedByOEM have a different source of // truth and so aren't written to this xml file Loading Loading @@ -1042,7 +1115,9 @@ public final class NotificationChannel implements Parcelable { && Objects.equals(getAudioAttributes(), that.getAudioAttributes()) && mImportanceLockedByOEM == that.mImportanceLockedByOEM && mImportanceLockedDefaultApp == that.mImportanceLockedDefaultApp && mOriginalImportance == that.mOriginalImportance; && mOriginalImportance == that.mOriginalImportance && Objects.equals(getParentChannelId(), that.getParentChannelId()) && Objects.equals(getConversationId(), that.getConversationId()); } @Override Loading @@ -1052,7 +1127,8 @@ public final class NotificationChannel implements Parcelable { getUserLockedFields(), isFgServiceShown(), mVibrationEnabled, mShowBadge, isDeleted(), getGroup(), getAudioAttributes(), isBlockableSystem(), mAllowBubbles, mImportanceLockedByOEM, mImportanceLockedDefaultApp, mOriginalImportance); mImportanceLockedByOEM, mImportanceLockedDefaultApp, mOriginalImportance, mParentId, mConversationId); result = 31 * result + Arrays.hashCode(mVibration); return result; } Loading @@ -1063,26 +1139,7 @@ public final class NotificationChannel implements Parcelable { String output = "NotificationChannel{" + "mId='" + mId + '\'' + ", mName=" + redactedName + ", mDescription=" + (!TextUtils.isEmpty(mDesc) ? "hasDescription " : "") + ", mImportance=" + mImportance + ", mBypassDnd=" + mBypassDnd + ", mLockscreenVisibility=" + mLockscreenVisibility + ", mSound=" + mSound + ", mLights=" + mLights + ", mLightColor=" + mLightColor + ", mVibration=" + Arrays.toString(mVibration) + ", mUserLockedFields=" + Integer.toHexString(mUserLockedFields) + ", mFgServiceShown=" + mFgServiceShown + ", mVibrationEnabled=" + mVibrationEnabled + ", mShowBadge=" + mShowBadge + ", mDeleted=" + mDeleted + ", mGroup='" + mGroup + '\'' + ", mAudioAttributes=" + mAudioAttributes + ", mBlockableSystem=" + mBlockableSystem + ", mAllowBubbles=" + mAllowBubbles + ", mImportanceLockedByOEM=" + mImportanceLockedByOEM + ", mImportanceLockedDefaultApp=" + mImportanceLockedDefaultApp + ", mOriginalImp=" + mOriginalImportance + getFieldsString() + '}'; pw.println(prefix + output); } Loading @@ -1092,7 +1149,12 @@ public final class NotificationChannel implements Parcelable { return "NotificationChannel{" + "mId='" + mId + '\'' + ", mName=" + mName + ", mDescription=" + (!TextUtils.isEmpty(mDesc) ? "hasDescription " : "") + getFieldsString() + '}'; } private String getFieldsString() { return ", mDescription=" + (!TextUtils.isEmpty(mDesc) ? "hasDescription " : "") + ", mImportance=" + mImportance + ", mBypassDnd=" + mBypassDnd + ", mLockscreenVisibility=" + mLockscreenVisibility Loading @@ -1112,7 +1174,8 @@ public final class NotificationChannel implements Parcelable { + ", mImportanceLockedByOEM=" + mImportanceLockedByOEM + ", mImportanceLockedDefaultApp=" + mImportanceLockedDefaultApp + ", mOriginalImp=" + mOriginalImportance + '}'; + ", mParent=" + mParentId + ", mConversationId" + mConversationId; } /** @hide */ Loading
core/java/android/app/NotificationManager.java +19 −0 Original line number Diff line number Diff line Loading @@ -842,6 +842,25 @@ public class NotificationManager { } } /** * Returns the notification channel settings for a given channel and conversation id. * * <p>The channel must belong to your package, or to a package you are an approved notification * delegate for (see {@link #canNotifyAsPackage(String)}), or it will not be returned. To query * a channel as a notification delegate, call this method from a context created for that * package (see {@link Context#createPackageContext(String, int)}).</p> */ public @Nullable NotificationChannel getNotificationChannel(@NonNull String channelId, @NonNull String conversationId) { INotificationManager service = getService(); try { return service.getConversationNotificationChannel(mContext.getOpPackageName(), mContext.getUserId(), mContext.getPackageName(), channelId, conversationId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } /** * Returns all notification channels belonging to the calling package. * Loading
services/core/java/com/android/server/notification/NotificationChannelExtractor.java +2 −1 Original line number Diff line number Diff line Loading @@ -43,7 +43,8 @@ public class NotificationChannelExtractor implements NotificationSignalExtractor } record.updateNotificationChannel(mConfig.getNotificationChannel(record.sbn.getPackageName(), record.sbn.getUid(), record.getChannel().getId(), false)); record.sbn.getUid(), record.getChannel().getId(), record.getNotification().getShortcutId(), false)); return null; } Loading