NotificationChannel.java revision 62b4224757cf60fe57d8c9b0d43ab357f4df056d
185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds/* 285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * Copyright (C) 2016 The Android Open Source Project 385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * 485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * Licensed under the Apache License, Version 2.0 (the "License"); 585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * you may not use this file except in compliance with the License. 685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * You may obtain a copy of the License at 785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * 885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * http://www.apache.org/licenses/LICENSE-2.0 985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * 1085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * Unless required by applicable law or agreed to in writing, software 1185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * distributed under the License is distributed on an "AS IS" BASIS, 1285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * See the License for the specific language governing permissions and 1485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * limitations under the License. 1585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 16b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldspackage android.app; 17b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 18b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.annotation.SystemApi; 196503bd8e33dbf6e8357256d43c6e1158e32a0268Jeff Sharkeyimport android.app.NotificationManager.Importance; 201d97e6a0c1341e3a6d8547fa843cb60ce6677a11Julia Reynoldsimport android.content.Intent; 21619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynoldsimport android.media.AudioAttributes; 22b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.net.Uri; 23b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.os.Parcel; 24b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.os.Parcelable; 25184b86da382b8e24cdd0e5629e70d7057d418883Julia Reynoldsimport android.provider.Settings; 26b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.service.notification.NotificationListenerService; 27b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.text.TextUtils; 2862b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adamsimport android.util.proto.ProtoOutputStream; 29b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 300f17000fb3b417fbc6129b47385c5f3c3dfd2de5Julia Reynoldsimport org.json.JSONException; 310f17000fb3b417fbc6129b47385c5f3c3dfd2de5Julia Reynoldsimport org.json.JSONObject; 320f17000fb3b417fbc6129b47385c5f3c3dfd2de5Julia Reynoldsimport org.xmlpull.v1.XmlPullParser; 330f17000fb3b417fbc6129b47385c5f3c3dfd2de5Julia Reynoldsimport org.xmlpull.v1.XmlSerializer; 340f17000fb3b417fbc6129b47385c5f3c3dfd2de5Julia Reynolds 35b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport java.io.IOException; 36f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynoldsimport java.util.Arrays; 37b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 38b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds/** 39b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * A representation of settings that apply to a collection of similarly themed notifications. 40b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 41b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldspublic final class NotificationChannel implements Parcelable { 42b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 43b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 44bad42976009ffb61010136ed8055f9e0f6d2e416Julia Reynolds * The id of the default channel for an app. This id is reserved by the system. All 45bad42976009ffb61010136ed8055f9e0f6d2e416Julia Reynolds * notifications posted from apps targeting {@link android.os.Build.VERSION_CODES#N_MR1} or 46bad42976009ffb61010136ed8055f9e0f6d2e416Julia Reynolds * earlier without a notification channel specified are posted to this channel. 47b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 48b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public static final String DEFAULT_CHANNEL_ID = "miscellaneous"; 49b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 502c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds /** 512c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * The maximum length for text fields in a NotificationChannel. Fields will be truncated at this 522c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * limit. 532c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds */ 542c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds private static final int MAX_TEXT_LENGTH = 1000; 552c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds 56b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String TAG_CHANNEL = "channel"; 57b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_NAME = "name"; 582c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds private static final String ATT_DESC = "desc"; 59b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_ID = "id"; 604036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds private static final String ATT_DELETED = "deleted"; 61b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_PRIORITY = "priority"; 62b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_VISIBILITY = "visibility"; 63b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_IMPORTANCE = "importance"; 64b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_LIGHTS = "lights"; 6559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds private static final String ATT_LIGHT_COLOR = "light_color"; 66b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_VIBRATION = "vibration"; 67f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private static final String ATT_VIBRATION_ENABLED = "vibration_enabled"; 680c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds private static final String ATT_SOUND = "sound"; 69619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds private static final String ATT_USAGE = "usage"; 70619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds private static final String ATT_FLAGS = "flags"; 71619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds private static final String ATT_CONTENT_TYPE = "content_type"; 72baff400fa5a93d157934818982fcf534327f9830Julia Reynolds private static final String ATT_SHOW_BADGE = "show_badge"; 7385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds private static final String ATT_USER_LOCKED = "locked"; 7459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds private static final String ATT_GROUP = "group"; 75f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds private static final String ATT_BLOCKABLE_SYSTEM = "blockable_system"; 76f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private static final String DELIMITER = ","; 7785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 7885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 7985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 8085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 8185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_PRIORITY = 0x00000001; 8285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 8385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 8485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 8585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_VISIBILITY = 0x00000002; 8685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 8785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 8885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 8985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_IMPORTANCE = 0x00000004; 9085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 9185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 9285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 9385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_LIGHTS = 0x00000008; 9485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 9585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 9685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 9785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_VIBRATION = 0x00000010; 9885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 9985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 10085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 1010c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds public static final int USER_LOCKED_SOUND = 0x00000020; 102b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 103baff400fa5a93d157934818982fcf534327f9830Julia Reynolds /** 104baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * @hide 105baff400fa5a93d157934818982fcf534327f9830Julia Reynolds */ 106baff400fa5a93d157934818982fcf534327f9830Julia Reynolds public static final int USER_LOCKED_SHOW_BADGE = 0x00000080; 107baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 108baff400fa5a93d157934818982fcf534327f9830Julia Reynolds /** 109baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * @hide 110baff400fa5a93d157934818982fcf534327f9830Julia Reynolds */ 111baff400fa5a93d157934818982fcf534327f9830Julia Reynolds public static final int[] LOCKABLE_FIELDS = new int[] { 112baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_PRIORITY, 113baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_VISIBILITY, 114baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_IMPORTANCE, 115baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_LIGHTS, 116baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_VIBRATION, 117baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_SOUND, 118619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds USER_LOCKED_SHOW_BADGE, 119baff400fa5a93d157934818982fcf534327f9830Julia Reynolds }; 120baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 121529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds private static final int DEFAULT_LIGHT_COLOR = 0; 122b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final int DEFAULT_VISIBILITY = 12385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds NotificationManager.VISIBILITY_NO_OVERRIDE; 124b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final int DEFAULT_IMPORTANCE = 12585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds NotificationManager.IMPORTANCE_UNSPECIFIED; 1264036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds private static final boolean DEFAULT_DELETED = false; 127924eed1ca6d3fec5dae7eb0f9c11b8f23f628697Julia Reynolds private static final boolean DEFAULT_SHOW_BADGE = true; 128b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 129b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private final String mId; 1302c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds private String mName; 1312c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds private String mDesc; 132b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private int mImportance = DEFAULT_IMPORTANCE; 133b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private boolean mBypassDnd; 134b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private int mLockscreenVisibility = DEFAULT_VISIBILITY; 135184b86da382b8e24cdd0e5629e70d7057d418883Julia Reynolds private Uri mSound = Settings.System.DEFAULT_NOTIFICATION_URI; 136b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private boolean mLights; 137529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds private int mLightColor = DEFAULT_LIGHT_COLOR; 138f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private long[] mVibration; 13962b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams // Bitwise representation of fields that have been changed by the user, preventing the app from 14062b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams // making changes to these fields. 14185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds private int mUserLockedFields; 142f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private boolean mVibrationEnabled; 143924eed1ca6d3fec5dae7eb0f9c11b8f23f628697Julia Reynolds private boolean mShowBadge = DEFAULT_SHOW_BADGE; 1444036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds private boolean mDeleted = DEFAULT_DELETED; 14559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds private String mGroup; 146619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds private AudioAttributes mAudioAttributes = Notification.AUDIO_ATTRIBUTES_DEFAULT; 14762b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams // If this is a blockable system notification channel. 148f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds private boolean mBlockableSystem = false; 149b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 150b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 151b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Creates a notification channel. 152b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * 1532c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * @param id The id of the channel. Must be unique per package. The value may be truncated if 1542c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * it is too long. 1552c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * @param name The user visible name of the channel. You can rename this channel when the system 1561d97e6a0c1341e3a6d8547fa843cb60ce6677a11Julia Reynolds * locale changes by listening for the {@link Intent#ACTION_LOCALE_CHANGED} 1572c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * broadcast. The recommended maximum length is 40 characters; the value may be 1582c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * truncated if it is too long. 15985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @param importance The importance of the channel. This controls how interruptive notifications 16030e06bb668f2e4b024c4ebc2a131de91c96de5ebJeff Sharkey * posted to this channel are. 161b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 16230e06bb668f2e4b024c4ebc2a131de91c96de5ebJeff Sharkey public NotificationChannel(String id, CharSequence name, @Importance int importance) { 1632c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds this.mId = getTrimmedString(id); 1642c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds this.mName = name != null ? getTrimmedString(name.toString()) : null; 16585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds this.mImportance = importance; 166b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 167b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 168bad42976009ffb61010136ed8055f9e0f6d2e416Julia Reynolds /** 169bad42976009ffb61010136ed8055f9e0f6d2e416Julia Reynolds * @hide 170bad42976009ffb61010136ed8055f9e0f6d2e416Julia Reynolds */ 171b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds protected NotificationChannel(Parcel in) { 172b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (in.readByte() != 0) { 173b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mId = in.readString(); 174b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } else { 175b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mId = null; 176b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 1772c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds if (in.readByte() != 0) { 1782c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds mName = in.readString(); 1792c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } else { 1802c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds mName = null; 1812c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 1822c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds if (in.readByte() != 0) { 1832c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds mDesc = in.readString(); 1842c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } else { 1852c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds mDesc = null; 1862c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 187b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mImportance = in.readInt(); 188b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mBypassDnd = in.readByte() != 0; 189b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mLockscreenVisibility = in.readInt(); 190b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (in.readByte() != 0) { 1910c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds mSound = Uri.CREATOR.createFromParcel(in); 192b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } else { 1930c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds mSound = null; 194b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 195b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mLights = in.readByte() != 0; 196f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds mVibration = in.createLongArray(); 19785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds mUserLockedFields = in.readInt(); 198f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds mVibrationEnabled = in.readByte() != 0; 199baff400fa5a93d157934818982fcf534327f9830Julia Reynolds mShowBadge = in.readByte() != 0; 2004036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds mDeleted = in.readByte() != 0; 20159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (in.readByte() != 0) { 20259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds mGroup = in.readString(); 20359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } else { 20459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds mGroup = null; 20559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 206619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds mAudioAttributes = in.readInt() > 0 ? AudioAttributes.CREATOR.createFromParcel(in) : null; 207529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds mLightColor = in.readInt(); 208f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds mBlockableSystem = in.readBoolean(); 209b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 210b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 211b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 212b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public void writeToParcel(Parcel dest, int flags) { 213b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (mId != null) { 214b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte((byte) 1); 215b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeString(mId); 216b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } else { 217b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte((byte) 0); 218b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 2192c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds if (mName != null) { 2202c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds dest.writeByte((byte) 1); 2212c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds dest.writeString(mName); 2222c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } else { 2232c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds dest.writeByte((byte) 0); 2242c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 2252c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds if (mDesc != null) { 2262c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds dest.writeByte((byte) 1); 2272c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds dest.writeString(mDesc); 2282c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } else { 2292c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds dest.writeByte((byte) 0); 2302c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 231b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeInt(mImportance); 232b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte(mBypassDnd ? (byte) 1 : (byte) 0); 233b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeInt(mLockscreenVisibility); 2340c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds if (mSound != null) { 235b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte((byte) 1); 2360c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds mSound.writeToParcel(dest, 0); 237b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } else { 238b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte((byte) 0); 239b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 240b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte(mLights ? (byte) 1 : (byte) 0); 241f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds dest.writeLongArray(mVibration); 24285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds dest.writeInt(mUserLockedFields); 243f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds dest.writeByte(mVibrationEnabled ? (byte) 1 : (byte) 0); 244baff400fa5a93d157934818982fcf534327f9830Julia Reynolds dest.writeByte(mShowBadge ? (byte) 1 : (byte) 0); 2454036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds dest.writeByte(mDeleted ? (byte) 1 : (byte) 0); 24659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (mGroup != null) { 24759e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds dest.writeByte((byte) 1); 24859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds dest.writeString(mGroup); 24959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } else { 25059e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds dest.writeByte((byte) 0); 25159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 252619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds if (mAudioAttributes != null) { 253619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds dest.writeInt(1); 254619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds mAudioAttributes.writeToParcel(dest, 0); 255619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds } else { 256619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds dest.writeInt(0); 257619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds } 258529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds dest.writeInt(mLightColor); 259f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds dest.writeBoolean(mBlockableSystem); 260b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 261b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 262b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 263b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @hide 264b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 26585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public void lockFields(int field) { 26685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds mUserLockedFields |= field; 267b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 268b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 2694036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds /** 2704036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds * @hide 2714036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds */ 272e0b25746267972b370a1c773ad18d146ee8163c3Julia Reynolds public void unlockFields(int field) { 273e0b25746267972b370a1c773ad18d146ee8163c3Julia Reynolds mUserLockedFields &= ~field; 274e0b25746267972b370a1c773ad18d146ee8163c3Julia Reynolds } 275e0b25746267972b370a1c773ad18d146ee8163c3Julia Reynolds 276e0b25746267972b370a1c773ad18d146ee8163c3Julia Reynolds /** 277e0b25746267972b370a1c773ad18d146ee8163c3Julia Reynolds * @hide 278e0b25746267972b370a1c773ad18d146ee8163c3Julia Reynolds */ 2794036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds public void setDeleted(boolean deleted) { 2804036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds mDeleted = deleted; 2814036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds } 2824036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds 283f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds /** 284f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds * @hide 285f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds */ 286f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds public void setBlockableSystem(boolean blockableSystem) { 287f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds mBlockableSystem = blockableSystem; 288f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds } 2892c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds // Modifiable by apps post channel creation 290b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 291b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 2922c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * Sets the user visible name of this channel. 293baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * 2942c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * <p>The recommended maximum length is 40 characters; the value may be truncated if it is too 2952c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * long. 296b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 2972c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds public void setName(CharSequence name) { 2982c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds mName = name != null ? getTrimmedString(name.toString()) : null; 299b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 300b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 301b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 3022c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * Sets the user visible description of this channel. 30385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * 3042c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * <p>The recommended maximum length is 300 characters; the value may be truncated if it is too 3052c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * long. 306b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 3072c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds public void setDescription(String description) { 3082c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds mDesc = getTrimmedString(description); 309b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 310b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 3112c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds private String getTrimmedString(String input) { 3122c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds if (input != null && input.length() > MAX_TEXT_LENGTH) { 3132c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds return input.substring(0, MAX_TEXT_LENGTH); 3142c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 3152c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds return input; 31685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds } 31785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 3188f488d3f2f754bc6e8f4e87f40031a3f6a0b00dbJulia Reynolds // Modifiable by apps on channel creation. 319b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 320b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 32159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * Sets what group this channel belongs to. 32259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * 32359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * Group information is only used for presentation, not for behavior. 32459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * 325619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * Only modifiable before the channel is submitted to 326619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * {@link NotificationManager#notify(String, int, Notification)}. 327619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * 32859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * @param groupId the id of a group created by 32959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * {@link NotificationManager#createNotificationChannelGroup(NotificationChannelGroup)}. 33059e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds */ 33159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds public void setGroup(String groupId) { 33259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds this.mGroup = groupId; 33359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 33459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds 33559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds /** 336f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds * Sets whether notifications posted to this channel can appear as application icon badges 337f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds * in a Launcher. 338f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds * 339f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds * @param showBadge true if badges should be allowed to be shown. 340f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds */ 341f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds public void setShowBadge(boolean showBadge) { 342f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds this.mShowBadge = showBadge; 343f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds } 344f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds 345f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds /** 346619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * Sets the sound that should be played for notifications posted to this channel and its 347184b86da382b8e24cdd0e5629e70d7057d418883Julia Reynolds * audio attributes. Notification channels with an {@link #getImportance() importance} of at 348184b86da382b8e24cdd0e5629e70d7057d418883Julia Reynolds * least {@link NotificationManager#IMPORTANCE_DEFAULT} should have a sound. 349619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * 350619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * Only modifiable before the channel is submitted to 351619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * {@link NotificationManager#notify(String, int, Notification)}. 352b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 353619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds public void setSound(Uri sound, AudioAttributes audioAttributes) { 3540c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds this.mSound = sound; 355619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds this.mAudioAttributes = audioAttributes; 356b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 357b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 358b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 359b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Sets whether notifications posted to this channel should display notification lights, 360619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * on devices that support that feature. 361619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * 362619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * Only modifiable before the channel is submitted to 363619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * {@link NotificationManager#notify(String, int, Notification)}. 364b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 365529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds public void enableLights(boolean lights) { 366b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds this.mLights = lights; 367b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 368b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 369b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 370529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds * Sets the notification light color for notifications posted to this channel, if lights are 371529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds * {@link #enableLights(boolean) enabled} on this channel and the device supports that feature. 372529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds * 373529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds * Only modifiable before the channel is submitted to 374529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds * {@link NotificationManager#notify(String, int, Notification)}. 375529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds */ 376529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds public void setLightColor(int argb) { 377529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds this.mLightColor = argb; 378529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds } 379529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds 380529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds /** 381f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * Sets whether notification posted to this channel should vibrate. The vibration pattern can 382619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * be set with {@link #setVibrationPattern(long[])}. 383619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * 384619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * Only modifiable before the channel is submitted to 385619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * {@link NotificationManager#notify(String, int, Notification)}. 386f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds */ 387f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds public void enableVibration(boolean vibration) { 388f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds this.mVibrationEnabled = vibration; 389f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 390f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds 391f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds /** 392a33f5c4312ce708933454dfd1b154ccc46be099cJulia Reynolds * Sets the vibration pattern for notifications posted to this channel. If the provided 393a33f5c4312ce708933454dfd1b154ccc46be099cJulia Reynolds * pattern is valid (non-null, non-empty), will {@link #enableVibration(boolean)} enable 394a33f5c4312ce708933454dfd1b154ccc46be099cJulia Reynolds * vibration} as well. Otherwise, vibration will be disabled. 395619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * 396619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * Only modifiable before the channel is submitted to 397619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * {@link NotificationManager#notify(String, int, Notification)}. 398b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 399f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds public void setVibrationPattern(long[] vibrationPattern) { 400a33f5c4312ce708933454dfd1b154ccc46be099cJulia Reynolds this.mVibrationEnabled = vibrationPattern != null && vibrationPattern.length > 0; 401f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds this.mVibration = vibrationPattern; 402b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 403b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 404b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 4056503bd8e33dbf6e8357256d43c6e1158e32a0268Jeff Sharkey * Sets the level of interruption of this notification channel. Only 4066503bd8e33dbf6e8357256d43c6e1158e32a0268Jeff Sharkey * modifiable before the channel is submitted to 4072c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * {@link NotificationManager#notify(String, int, Notification)}. 4082c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * 4096503bd8e33dbf6e8357256d43c6e1158e32a0268Jeff Sharkey * @param importance the amount the user should be interrupted by 4106503bd8e33dbf6e8357256d43c6e1158e32a0268Jeff Sharkey * notifications from this channel. 4112c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds */ 4126503bd8e33dbf6e8357256d43c6e1158e32a0268Jeff Sharkey public void setImportance(@Importance int importance) { 4132c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds this.mImportance = importance; 4142c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 4152c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds 4162c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds // Modifiable by a notification ranker. 4172c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds 4182c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds /** 4192c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * Sets whether or not notifications posted to this channel can interrupt the user in 4202c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * {@link android.app.NotificationManager.Policy#INTERRUPTION_FILTER_PRIORITY} mode. 4212c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * 4222c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * Only modifiable by the system and notification ranker. 4232c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds */ 4242c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds public void setBypassDnd(boolean bypassDnd) { 4252c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds this.mBypassDnd = bypassDnd; 4262c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 4272c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds 4282c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds /** 4292c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * Sets whether notifications posted to this channel appear on the lockscreen or not, and if so, 4302c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * whether they appear in a redacted form. See e.g. {@link Notification#VISIBILITY_SECRET}. 4312c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * 4322c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * Only modifiable by the system and notification ranker. 4332c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds */ 4342c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds public void setLockscreenVisibility(int lockscreenVisibility) { 4352c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds this.mLockscreenVisibility = lockscreenVisibility; 4362c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 4372c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds 4382c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds /** 439b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns the id of this channel. 440b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 441b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public String getId() { 442b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mId; 443b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 444b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 445b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 446b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns the user visible name of this channel. 447b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 4482c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds public CharSequence getName() { 449b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mName; 450b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 451b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 452b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 4532c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds * Returns the user visible description of this channel. 4542c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds */ 4552c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds public String getDescription() { 4562c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds return mDesc; 4572c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 4582c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds 4592c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds /** 460184b86da382b8e24cdd0e5629e70d7057d418883Julia Reynolds * Returns the user specified importance e.g. {@link NotificationManager#IMPORTANCE_LOW} for 461b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * notifications posted to this channel. 462b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 463b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public int getImportance() { 464b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mImportance; 465b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 466b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 467b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 468b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Whether or not notifications posted to this channel can bypass the Do Not Disturb 469b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * {@link NotificationManager#INTERRUPTION_FILTER_PRIORITY} mode. 470b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 471b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public boolean canBypassDnd() { 472b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mBypassDnd; 473b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 474b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 475b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 476b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns the notification sound for this channel. 477b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 4780c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds public Uri getSound() { 4790c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds return mSound; 480b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 481b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 482b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 483619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds * Returns the audio attributes for sound played by notifications posted to this channel. 484619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds */ 485619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds public AudioAttributes getAudioAttributes() { 486619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds return mAudioAttributes; 487619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds } 488619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds 489619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds /** 490b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns whether notifications posted to this channel trigger notification lights. 491b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 492b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public boolean shouldShowLights() { 493b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mLights; 494b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 495b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 496b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 497529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds * Returns the notification light color for notifications posted to this channel. Irrelevant 498529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds * unless {@link #shouldShowLights()}. 499529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds */ 500529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds public int getLightColor() { 501529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds return mLightColor; 502529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds } 503529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds 504529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds /** 505b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns whether notifications posted to this channel always vibrate. 506b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 507b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public boolean shouldVibrate() { 508f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds return mVibrationEnabled; 509f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 510f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds 511f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds /** 512f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * Returns the vibration pattern for notifications posted to this channel. Will be ignored if 513f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * vibration is not enabled ({@link #shouldVibrate()}. 514f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds */ 515f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds public long[] getVibrationPattern() { 516b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mVibration; 517b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 518b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 519b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 52085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * Returns whether or not notifications posted to this channel are shown on the lockscreen in 52185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * full or redacted form. 522b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 523b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public int getLockscreenVisibility() { 524b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mLockscreenVisibility; 525b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 526b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 527b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 528baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * Returns whether notifications posted to this channel can appear as badges in a Launcher 529baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * application. 530924eed1ca6d3fec5dae7eb0f9c11b8f23f628697Julia Reynolds * 531924eed1ca6d3fec5dae7eb0f9c11b8f23f628697Julia Reynolds * Note that badging may be disabled for other reasons. 532baff400fa5a93d157934818982fcf534327f9830Julia Reynolds */ 533baff400fa5a93d157934818982fcf534327f9830Julia Reynolds public boolean canShowBadge() { 534baff400fa5a93d157934818982fcf534327f9830Julia Reynolds return mShowBadge; 535baff400fa5a93d157934818982fcf534327f9830Julia Reynolds } 536baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 537baff400fa5a93d157934818982fcf534327f9830Julia Reynolds /** 53859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * Returns what group this channel belongs to. 53959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * 54059e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * This is used only for visually grouping channels in the UI. 54159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds */ 54259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds public String getGroup() { 54359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds return mGroup; 54459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 54559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds 54659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds /** 5474036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds * @hide 548baff400fa5a93d157934818982fcf534327f9830Julia Reynolds */ 5494036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds @SystemApi 5504036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds public boolean isDeleted() { 5514036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds return mDeleted; 552baff400fa5a93d157934818982fcf534327f9830Julia Reynolds } 553baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 554baff400fa5a93d157934818982fcf534327f9830Julia Reynolds /** 555b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @hide 556b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 557b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @SystemApi 55885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public int getUserLockedFields() { 55985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds return mUserLockedFields; 56085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds } 56185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 56285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 56385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 56485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 565f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds public boolean isBlockableSystem() { 566f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds return mBlockableSystem; 567f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds } 568f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds 569f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds /** 570f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds * @hide 571f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds */ 57285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @SystemApi 573b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public void populateFromXml(XmlPullParser parser) { 57485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds // Name, id, and importance are set in the constructor. 5752c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds setDescription(parser.getAttributeValue(null, ATT_DESC)); 576b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds setBypassDnd(Notification.PRIORITY_DEFAULT 577b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds != safeInt(parser, ATT_PRIORITY, Notification.PRIORITY_DEFAULT)); 578b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds setLockscreenVisibility(safeInt(parser, ATT_VISIBILITY, DEFAULT_VISIBILITY)); 579619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds setSound(safeUri(parser, ATT_SOUND), safeAudioAttributes(parser)); 580529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds enableLights(safeBool(parser, ATT_LIGHTS, false)); 581529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds setLightColor(safeInt(parser, ATT_LIGHT_COLOR, DEFAULT_LIGHT_COLOR)); 582f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds setVibrationPattern(safeLongArray(parser, ATT_VIBRATION, null)); 583745c15477b22f88af303065e18025af386582736Julia Reynolds enableVibration(safeBool(parser, ATT_VIBRATION_ENABLED, false)); 584baff400fa5a93d157934818982fcf534327f9830Julia Reynolds setShowBadge(safeBool(parser, ATT_SHOW_BADGE, false)); 5854036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds setDeleted(safeBool(parser, ATT_DELETED, false)); 58659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds setGroup(parser.getAttributeValue(null, ATT_GROUP)); 58785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds lockFields(safeInt(parser, ATT_USER_LOCKED, 0)); 588f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds setBlockableSystem(safeBool(parser, ATT_BLOCKABLE_SYSTEM, false)); 589b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 590b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 591b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 592b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @hide 593b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 594b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @SystemApi 595b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public void writeXml(XmlSerializer out) throws IOException { 596b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.startTag(null, TAG_CHANNEL); 597b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute(null, ATT_ID, getId()); 5985a31193497fa923e24bc5c9796b40fdfae604d31Julia Reynolds if (getName() != null) { 5995a31193497fa923e24bc5c9796b40fdfae604d31Julia Reynolds out.attribute(null, ATT_NAME, getName().toString()); 6005a31193497fa923e24bc5c9796b40fdfae604d31Julia Reynolds } 6012c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds if (getDescription() != null) { 6022c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds out.attribute(null, ATT_DESC, getDescription()); 6032c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 604b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (getImportance() != DEFAULT_IMPORTANCE) { 605b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute( 606b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds null, ATT_IMPORTANCE, Integer.toString(getImportance())); 607b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 608b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (canBypassDnd()) { 609b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute( 610b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds null, ATT_PRIORITY, Integer.toString(Notification.PRIORITY_MAX)); 611b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 612b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (getLockscreenVisibility() != DEFAULT_VISIBILITY) { 613b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute(null, ATT_VISIBILITY, 614b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds Integer.toString(getLockscreenVisibility())); 615b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 6160c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds if (getSound() != null) { 6170c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds out.attribute(null, ATT_SOUND, getSound().toString()); 618b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 619619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds if (getAudioAttributes() != null) { 620619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds out.attribute(null, ATT_USAGE, Integer.toString(getAudioAttributes().getUsage())); 621619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds out.attribute(null, ATT_CONTENT_TYPE, 622619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds Integer.toString(getAudioAttributes().getContentType())); 623619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds out.attribute(null, ATT_FLAGS, Integer.toString(getAudioAttributes().getFlags())); 624619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds } 625b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (shouldShowLights()) { 626b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute(null, ATT_LIGHTS, Boolean.toString(shouldShowLights())); 627b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 628529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds if (getLightColor() != DEFAULT_LIGHT_COLOR) { 629529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds out.attribute(null, ATT_LIGHT_COLOR, Integer.toString(getLightColor())); 630529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds } 631b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (shouldVibrate()) { 632f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds out.attribute(null, ATT_VIBRATION_ENABLED, Boolean.toString(shouldVibrate())); 633f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 634f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds if (getVibrationPattern() != null) { 635f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds out.attribute(null, ATT_VIBRATION, longArrayToString(getVibrationPattern())); 636b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 63785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds if (getUserLockedFields() != 0) { 63885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds out.attribute(null, ATT_USER_LOCKED, Integer.toString(getUserLockedFields())); 63985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds } 640baff400fa5a93d157934818982fcf534327f9830Julia Reynolds if (canShowBadge()) { 641baff400fa5a93d157934818982fcf534327f9830Julia Reynolds out.attribute(null, ATT_SHOW_BADGE, Boolean.toString(canShowBadge())); 642baff400fa5a93d157934818982fcf534327f9830Julia Reynolds } 6434036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds if (isDeleted()) { 6444036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds out.attribute(null, ATT_DELETED, Boolean.toString(isDeleted())); 6454036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds } 64659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getGroup() != null) { 64759e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds out.attribute(null, ATT_GROUP, getGroup()); 64859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 649f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds if (isBlockableSystem()) { 650f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds out.attribute(null, ATT_BLOCKABLE_SYSTEM, Boolean.toString(isBlockableSystem())); 651f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds } 65285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 653b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.endTag(null, TAG_CHANNEL); 654b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 655b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 656b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 657b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @hide 658b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 659b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @SystemApi 660b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public JSONObject toJson() throws JSONException { 661b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds JSONObject record = new JSONObject(); 662b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_ID, getId()); 663b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_NAME, getName()); 6642c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds record.put(ATT_DESC, getDescription()); 665b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (getImportance() != DEFAULT_IMPORTANCE) { 666b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_IMPORTANCE, 667b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds NotificationListenerService.Ranking.importanceToString(getImportance())); 668b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 669b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (canBypassDnd()) { 670b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_PRIORITY, Notification.PRIORITY_MAX); 671b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 672b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (getLockscreenVisibility() != DEFAULT_VISIBILITY) { 673b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_VISIBILITY, Notification.visibilityToString(getLockscreenVisibility())); 674b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 6750c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds if (getSound() != null) { 6760c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds record.put(ATT_SOUND, getSound().toString()); 677b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 678619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds if (getAudioAttributes() != null) { 679619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds record.put(ATT_USAGE, Integer.toString(getAudioAttributes().getUsage())); 680619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds record.put(ATT_CONTENT_TYPE, 681619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds Integer.toString(getAudioAttributes().getContentType())); 682619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds record.put(ATT_FLAGS, Integer.toString(getAudioAttributes().getFlags())); 683619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds } 684b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_LIGHTS, Boolean.toString(shouldShowLights())); 685529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds record.put(ATT_LIGHT_COLOR, Integer.toString(getLightColor())); 686f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds record.put(ATT_VIBRATION_ENABLED, Boolean.toString(shouldVibrate())); 68785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds record.put(ATT_USER_LOCKED, Integer.toString(getUserLockedFields())); 688f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds record.put(ATT_VIBRATION, longArrayToString(getVibrationPattern())); 689baff400fa5a93d157934818982fcf534327f9830Julia Reynolds record.put(ATT_SHOW_BADGE, Boolean.toString(canShowBadge())); 6904036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds record.put(ATT_DELETED, Boolean.toString(isDeleted())); 69159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds record.put(ATT_GROUP, getGroup()); 692f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds record.put(ATT_BLOCKABLE_SYSTEM, isBlockableSystem()); 693b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return record; 694b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 695b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 696619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds private static AudioAttributes safeAudioAttributes(XmlPullParser parser) { 697619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds int usage = safeInt(parser, ATT_USAGE, AudioAttributes.USAGE_NOTIFICATION); 698619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds int contentType = safeInt(parser, ATT_CONTENT_TYPE, 699619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds AudioAttributes.CONTENT_TYPE_SONIFICATION); 700619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds int flags = safeInt(parser, ATT_FLAGS, 0); 701619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds return new AudioAttributes.Builder() 702619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds .setUsage(usage) 703619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds .setContentType(contentType) 704619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds .setFlags(flags) 705619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds .build(); 706619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds } 707619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds 708b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static Uri safeUri(XmlPullParser parser, String att) { 709b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds final String val = parser.getAttributeValue(null, att); 710b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return val == null ? null : Uri.parse(val); 711b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 712b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 713b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static int safeInt(XmlPullParser parser, String att, int defValue) { 714b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds final String val = parser.getAttributeValue(null, att); 715b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return tryParseInt(val, defValue); 716b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 717b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 718b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static int tryParseInt(String value, int defValue) { 719b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (TextUtils.isEmpty(value)) return defValue; 720b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds try { 721b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return Integer.parseInt(value); 722b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } catch (NumberFormatException e) { 723b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return defValue; 724b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 725b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 726b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 727b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static boolean safeBool(XmlPullParser parser, String att, boolean defValue) { 728b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds final String value = parser.getAttributeValue(null, att); 729b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (TextUtils.isEmpty(value)) return defValue; 730b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return Boolean.parseBoolean(value); 731b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 732b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 733f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private static long[] safeLongArray(XmlPullParser parser, String att, long[] defValue) { 734f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds final String attributeValue = parser.getAttributeValue(null, att); 735f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds if (TextUtils.isEmpty(attributeValue)) return defValue; 736f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds String[] values = attributeValue.split(DELIMITER); 737f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds long[] longValues = new long[values.length]; 738f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds for (int i = 0; i < values.length; i++) { 739f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds try { 740f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds longValues[i] = Long.parseLong(values[i]); 741f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } catch (NumberFormatException e) { 742f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds longValues[i] = 0; 743f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 744f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 745f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds return longValues; 746f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 747f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds 748f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private static String longArrayToString(long[] values) { 749f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds StringBuffer sb = new StringBuffer(); 7500f17000fb3b417fbc6129b47385c5f3c3dfd2de5Julia Reynolds if (values != null && values.length > 0) { 75159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds for (int i = 0; i < values.length - 1; i++) { 75259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds sb.append(values[i]).append(DELIMITER); 75359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 75459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds sb.append(values[values.length - 1]); 755f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 756f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds return sb.toString(); 757f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 758f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds 759b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public static final Creator<NotificationChannel> CREATOR = new Creator<NotificationChannel>() { 760b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 761b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public NotificationChannel createFromParcel(Parcel in) { 762b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return new NotificationChannel(in); 763b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 764b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 765b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 766b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public NotificationChannel[] newArray(int size) { 767b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return new NotificationChannel[size]; 768b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 769b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds }; 770b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 771b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 772b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public int describeContents() { 773b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return 0; 774b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 775b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 776b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 777b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public boolean equals(Object o) { 778b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (this == o) return true; 779b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (o == null || getClass() != o.getClass()) return false; 780b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 781b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds NotificationChannel that = (NotificationChannel) o; 782b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 78359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getImportance() != that.getImportance()) return false; 784b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (mBypassDnd != that.mBypassDnd) return false; 78559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getLockscreenVisibility() != that.getLockscreenVisibility()) return false; 786b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (mLights != that.mLights) return false; 787529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds if (getLightColor() != that.getLightColor()) return false; 78859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getUserLockedFields() != that.getUserLockedFields()) return false; 789f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds if (mVibrationEnabled != that.mVibrationEnabled) return false; 790baff400fa5a93d157934818982fcf534327f9830Julia Reynolds if (mShowBadge != that.mShowBadge) return false; 79159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (isDeleted() != that.isDeleted()) return false; 792f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds if (isBlockableSystem() != that.isBlockableSystem()) return false; 79359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getId() != null ? !getId().equals(that.getId()) : that.getId() != null) return false; 79459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) { 79559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds return false; 79659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 7972c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds if (getDescription() != null ? !getDescription().equals(that.getDescription()) 7982c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds : that.getDescription() != null) { 7992c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds return false; 8002c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds } 80159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getSound() != null ? !getSound().equals(that.getSound()) : that.getSound() != null) { 80259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds return false; 80359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 80459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (!Arrays.equals(mVibration, that.mVibration)) return false; 805619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds if (getGroup() != null ? !getGroup().equals(that.getGroup()) : that.getGroup() != null) { 806619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds return false; 807619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds } 808619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds return getAudioAttributes() != null ? getAudioAttributes().equals(that.getAudioAttributes()) 809619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds : that.getAudioAttributes() == null; 81085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 81185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds } 81285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 81385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @Override 81485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public int hashCode() { 81559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds int result = getId() != null ? getId().hashCode() : 0; 81659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + (getName() != null ? getName().hashCode() : 0); 8172c891c92fabb0ef8fdb77870b0272c156c71c7f0Julia Reynolds result = 31 * result + (getDescription() != null ? getDescription().hashCode() : 0); 81859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + getImportance(); 81985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds result = 31 * result + (mBypassDnd ? 1 : 0); 82059e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + getLockscreenVisibility(); 82159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + (getSound() != null ? getSound().hashCode() : 0); 82285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds result = 31 * result + (mLights ? 1 : 0); 823529e3329e68963eff0dd1cf40d938a9953cd5060Julia Reynolds result = 31 * result + getLightColor(); 824f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds result = 31 * result + Arrays.hashCode(mVibration); 82559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + getUserLockedFields(); 826f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds result = 31 * result + (mVibrationEnabled ? 1 : 0); 827baff400fa5a93d157934818982fcf534327f9830Julia Reynolds result = 31 * result + (mShowBadge ? 1 : 0); 82859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + (isDeleted() ? 1 : 0); 82959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + (getGroup() != null ? getGroup().hashCode() : 0); 830619a69f722b75241b372cf7b01b45b2dd1c862faJulia Reynolds result = 31 * result + (getAudioAttributes() != null ? getAudioAttributes().hashCode() : 0); 831f732159cf8d6a4e1cd17542a3a2cf020ad6919a3Julia Reynolds result = 31 * result + (isBlockableSystem() ? 1 : 0); 83285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds return result; 833b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 834b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 835b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 836b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public String toString() { 837005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds return "NotificationChannel{" 838005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + "mId='" + mId + '\'' 839005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mName=" + mName 840005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mDescription=" + (!TextUtils.isEmpty(mDesc) ? "hasDescription " : "") 841005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mImportance=" + mImportance 842005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mBypassDnd=" + mBypassDnd 843005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mLockscreenVisibility=" + mLockscreenVisibility 844005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mSound=" + mSound 845005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mLights=" + mLights 846005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mLightColor=" + mLightColor 847005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mVibration=" + Arrays.toString(mVibration) 848005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mUserLockedFields=" + Integer.toHexString(mUserLockedFields) 849005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mVibrationEnabled=" + mVibrationEnabled 850005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mShowBadge=" + mShowBadge 851005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mDeleted=" + mDeleted 852005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mGroup='" + mGroup + '\'' 853005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mAudioAttributes=" + mAudioAttributes 854005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + ", mBlockableSystem=" + mBlockableSystem 855005c8b9098120526fa69f98bce3a5e1f79e3699bJulia Reynolds + '}'; 856b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 85762b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams 85862b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams /** @hide */ 85962b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams public void toProto(ProtoOutputStream proto) { 86062b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.ID, mId); 86162b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.NAME, mName); 86262b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.DESCRIPTION, mDesc); 86362b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.IMPORTANCE, mImportance); 86462b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.CAN_BYPASS_DND, mBypassDnd); 86562b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.LOCKSCREEN_VISIBILITY, mLockscreenVisibility); 86662b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams if (mSound != null) { 86762b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.SOUND, mSound.toString()); 86862b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams } 86962b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.USE_LIGHTS, mLights); 87062b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.LIGHT_COLOR, mLightColor); 87162b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams if (mVibration != null) { 87262b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams for (long v : mVibration) { 87362b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.VIBRATION, v); 87462b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams } 87562b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams } 87662b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.USER_LOCKED_FIELDS, mUserLockedFields); 87762b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.IS_VIBRATION_ENABLED, mVibrationEnabled); 87862b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.SHOW_BADGE, mShowBadge); 87962b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.IS_DELETED, mDeleted); 88062b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.GROUP, mGroup); 88162b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams if (mAudioAttributes != null) { 88262b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams long aToken = proto.start(NotificationChannelProto.AUDIO_ATTRIBUTES); 88362b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams mAudioAttributes.toProto(proto); 88462b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.end(aToken); 88562b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams } 88662b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams proto.write(NotificationChannelProto.IS_BLOCKABLE_SYSTEM, mBlockableSystem); 88762b4224757cf60fe57d8c9b0d43ab357f4df056dKweku Adams } 888b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds} 889