NotificationChannel.java revision 59e152e92e6ebb71bab974973ce29b4f8d11f7cf
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 org.json.JSONException; 19b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport org.json.JSONObject; 20b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport org.xmlpull.v1.XmlPullParser; 21b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport org.xmlpull.v1.XmlSerializer; 22b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 23b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.annotation.SystemApi; 2459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynoldsimport android.app.NotificationManager; 25b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.net.Uri; 26b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.os.Parcel; 27b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.os.Parcelable; 28b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.service.notification.NotificationListenerService; 29b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport android.text.TextUtils; 30b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 31b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldsimport java.io.IOException; 32f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynoldsimport java.util.Arrays; 33b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 34b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds/** 35b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * A representation of settings that apply to a collection of similarly themed notifications. 36b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 37b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynoldspublic final class NotificationChannel implements Parcelable { 38b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 39b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 40b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * The id of the default channel for an app. All notifications posted without a notification 41b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * channel specified are posted to this channel. 42b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 43b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public static final String DEFAULT_CHANNEL_ID = "miscellaneous"; 44b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 45b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String TAG_CHANNEL = "channel"; 46b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_NAME = "name"; 47b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_ID = "id"; 484036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds private static final String ATT_DELETED = "deleted"; 49b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_PRIORITY = "priority"; 50b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_VISIBILITY = "visibility"; 51b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_IMPORTANCE = "importance"; 52b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_LIGHTS = "lights"; 5359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds //TODO: add support for light colors 5459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds private static final String ATT_LIGHT_COLOR = "light_color"; 55b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final String ATT_VIBRATION = "vibration"; 56f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private static final String ATT_VIBRATION_ENABLED = "vibration_enabled"; 570c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds private static final String ATT_SOUND = "sound"; 580c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds //TODO: add audio attributes support 590c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds private static final String ATT_AUDIO_ATTRIBUTES = "audio_attributes"; 60baff400fa5a93d157934818982fcf534327f9830Julia Reynolds private static final String ATT_SHOW_BADGE = "show_badge"; 6185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds private static final String ATT_USER_LOCKED = "locked"; 6259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds private static final String ATT_GROUP = "group"; 63f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private static final String DELIMITER = ","; 6485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 6585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 6685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 6785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 6885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @SystemApi 6985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_PRIORITY = 0x00000001; 7085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 7185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 7285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 7385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @SystemApi 7485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_VISIBILITY = 0x00000002; 7585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 7685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 7785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 7885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @SystemApi 7985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_IMPORTANCE = 0x00000004; 8085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 8185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 8285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 8385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @SystemApi 8485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_LIGHTS = 0x00000008; 8585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 8685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 8785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 8885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @SystemApi 8985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public static final int USER_LOCKED_VIBRATION = 0x00000010; 9085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 9185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 9285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 9385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @SystemApi 940c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds public static final int USER_LOCKED_SOUND = 0x00000020; 95b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 96baff400fa5a93d157934818982fcf534327f9830Julia Reynolds /** 97baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * @hide 98baff400fa5a93d157934818982fcf534327f9830Julia Reynolds */ 99baff400fa5a93d157934818982fcf534327f9830Julia Reynolds @SystemApi 100baff400fa5a93d157934818982fcf534327f9830Julia Reynolds public static final int USER_LOCKED_ALLOWED = 0x00000040; 101baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 102baff400fa5a93d157934818982fcf534327f9830Julia Reynolds /** 103baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * @hide 104baff400fa5a93d157934818982fcf534327f9830Julia Reynolds */ 105baff400fa5a93d157934818982fcf534327f9830Julia Reynolds @SystemApi 106baff400fa5a93d157934818982fcf534327f9830Julia Reynolds public static final int USER_LOCKED_SHOW_BADGE = 0x00000080; 107baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 108baff400fa5a93d157934818982fcf534327f9830Julia Reynolds /** 109baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * @hide 110baff400fa5a93d157934818982fcf534327f9830Julia Reynolds */ 111baff400fa5a93d157934818982fcf534327f9830Julia Reynolds @SystemApi 112baff400fa5a93d157934818982fcf534327f9830Julia Reynolds public static final int[] LOCKABLE_FIELDS = new int[] { 113baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_PRIORITY, 114baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_VISIBILITY, 115baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_IMPORTANCE, 116baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_LIGHTS, 117baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_VIBRATION, 118baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_SOUND, 119baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_ALLOWED, 120baff400fa5a93d157934818982fcf534327f9830Julia Reynolds USER_LOCKED_SHOW_BADGE 121baff400fa5a93d157934818982fcf534327f9830Julia Reynolds }; 122baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 123baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 124b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final int DEFAULT_VISIBILITY = 12585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds NotificationManager.VISIBILITY_NO_OVERRIDE; 126b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static final int DEFAULT_IMPORTANCE = 12785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds NotificationManager.IMPORTANCE_UNSPECIFIED; 1284036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds private static final boolean DEFAULT_DELETED = false; 129924eed1ca6d3fec5dae7eb0f9c11b8f23f628697Julia Reynolds private static final boolean DEFAULT_SHOW_BADGE = true; 130b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 131b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private final String mId; 132b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private CharSequence mName; 133b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private int mImportance = DEFAULT_IMPORTANCE; 134b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private boolean mBypassDnd; 135b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private int mLockscreenVisibility = DEFAULT_VISIBILITY; 1360c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds private Uri mSound; 137b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private boolean mLights; 138f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private long[] mVibration; 13985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds private int mUserLockedFields; 140f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private boolean mVibrationEnabled; 141924eed1ca6d3fec5dae7eb0f9c11b8f23f628697Julia Reynolds private boolean mShowBadge = DEFAULT_SHOW_BADGE; 1424036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds private boolean mDeleted = DEFAULT_DELETED; 14359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds private String mGroup; 144b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 145b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 146b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Creates a notification channel. 147b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * 148b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @param id The id of the channel. Must be unique per package. 149b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @param name The user visible name of the channel. 15085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @param importance The importance of the channel. This controls how interruptive notifications 15185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * posted to this channel are. See e.g. 15285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * {@link NotificationManager#IMPORTANCE_DEFAULT}. 153b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 15485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public NotificationChannel(String id, CharSequence name, int importance) { 155b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds this.mId = id; 156b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds this.mName = name; 15785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds this.mImportance = importance; 158b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 159b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 160b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds protected NotificationChannel(Parcel in) { 161b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (in.readByte() != 0) { 162b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mId = in.readString(); 163b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } else { 164b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mId = null; 165b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 166b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in); 167b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mImportance = in.readInt(); 168b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mBypassDnd = in.readByte() != 0; 169b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mLockscreenVisibility = in.readInt(); 170b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (in.readByte() != 0) { 1710c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds mSound = Uri.CREATOR.createFromParcel(in); 172b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } else { 1730c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds mSound = null; 174b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 175b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds mLights = in.readByte() != 0; 176f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds mVibration = in.createLongArray(); 17785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds mUserLockedFields = in.readInt(); 178f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds mVibrationEnabled = in.readByte() != 0; 179baff400fa5a93d157934818982fcf534327f9830Julia Reynolds mShowBadge = in.readByte() != 0; 1804036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds mDeleted = in.readByte() != 0; 18159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (in.readByte() != 0) { 18259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds mGroup = in.readString(); 18359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } else { 18459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds mGroup = null; 18559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 186b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 187b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 188b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 189b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public void writeToParcel(Parcel dest, int flags) { 190b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (mId != null) { 191b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte((byte) 1); 192b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeString(mId); 193b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } else { 194b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte((byte) 0); 195b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 196b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds TextUtils.writeToParcel(mName, dest, flags); 197b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeInt(mImportance); 198b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte(mBypassDnd ? (byte) 1 : (byte) 0); 199b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeInt(mLockscreenVisibility); 2000c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds if (mSound != null) { 201b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte((byte) 1); 2020c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds mSound.writeToParcel(dest, 0); 203b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } else { 204b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte((byte) 0); 205b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 206b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds dest.writeByte(mLights ? (byte) 1 : (byte) 0); 207f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds dest.writeLongArray(mVibration); 20885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds dest.writeInt(mUserLockedFields); 209f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds dest.writeByte(mVibrationEnabled ? (byte) 1 : (byte) 0); 210baff400fa5a93d157934818982fcf534327f9830Julia Reynolds dest.writeByte(mShowBadge ? (byte) 1 : (byte) 0); 2114036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds dest.writeByte(mDeleted ? (byte) 1 : (byte) 0); 21259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (mGroup != null) { 21359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds dest.writeByte((byte) 1); 21459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds dest.writeString(mGroup); 21559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } else { 21659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds dest.writeByte((byte) 0); 21759e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 218b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 219b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 220b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 221b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @hide 222b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 223b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @SystemApi 22485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public void lockFields(int field) { 22585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds mUserLockedFields |= field; 226b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 227b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 2284036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds /** 2294036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds * @hide 2304036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds */ 2314036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds @SystemApi 2324036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds public void setDeleted(boolean deleted) { 2334036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds mDeleted = deleted; 2344036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds } 2354036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds 23685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds // Modifiable by a notification ranker. 237b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 238b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 239baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * Sets whether or not notifications posted to this channel can interrupt the user in 24085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * {@link android.app.NotificationManager.Policy#INTERRUPTION_FILTER_PRIORITY} mode. 241baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * 242baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * Only modifiable by the system and notification ranker. 243b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 244b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public void setBypassDnd(boolean bypassDnd) { 245b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds this.mBypassDnd = bypassDnd; 246b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 247b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 248b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 249baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * Sets whether notifications posted to this channel appear on the lockscreen or not, and if so, 250baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * whether they appear in a redacted form. See e.g. {@link Notification#VISIBILITY_SECRET}. 25185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * 252baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * Only modifiable by the system and notification ranker. 253b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 254b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public void setLockscreenVisibility(int lockscreenVisibility) { 255b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds this.mLockscreenVisibility = lockscreenVisibility; 256b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 257b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 25885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 25985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * Sets the level of interruption of this notification channel. 26085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * 261baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * Only modifiable by the system and notification ranker. 262baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * 26385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @param importance the amount the user should be interrupted by notifications from this 26485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * channel. See e.g. 26585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * {@link android.app.NotificationManager#IMPORTANCE_DEFAULT}. 26685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 26785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public void setImportance(int importance) { 26885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds this.mImportance = importance; 26985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds } 27085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 2718f488d3f2f754bc6e8f4e87f40031a3f6a0b00dbJulia Reynolds // Modifiable by apps on channel creation. 272b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 273b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 27459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * Sets what group this channel belongs to. 27559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * 27659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * Group information is only used for presentation, not for behavior. 27759e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * 27859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * @param groupId the id of a group created by 27959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * {@link NotificationManager#createNotificationChannelGroup(NotificationChannelGroup)}. 28059e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds */ 28159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds public void setGroup(String groupId) { 28259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds this.mGroup = groupId; 28359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 28459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds 28559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds /** 286f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds * Sets whether notifications posted to this channel can appear as application icon badges 287f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds * in a Launcher. 288f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds * 289f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds * @param showBadge true if badges should be allowed to be shown. 290f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds */ 291f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds public void setShowBadge(boolean showBadge) { 292f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds this.mShowBadge = showBadge; 293f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds } 294f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds 295f35e3976e3c01077f8d8d0938d2ba0b3e5b80613Julia Reynolds /** 2960c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds * Sets the sound that should be played for notifications posted to this channel if 2970c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds * the notifications don't supply a sound. Only modifiable before the channel is submitted 29885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * to the NotificationManager. 299b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 3000c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds public void setSound(Uri sound) { 3010c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds this.mSound = sound; 302b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 303b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 304b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 305b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Sets whether notifications posted to this channel should display notification lights, 30685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * on devices that support that feature. Only modifiable before the channel is submitted to 30785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * the NotificationManager. 308b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 309b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public void setLights(boolean lights) { 310b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds this.mLights = lights; 311b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 312b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 313b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 314f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * Sets whether notification posted to this channel should vibrate. The vibration pattern can 315f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * be set with {@link #setVibrationPattern(long[])}. Only modifiable before the channel is 316f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * submitted to the NotificationManager. 317f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds */ 318f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds public void enableVibration(boolean vibration) { 319f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds this.mVibrationEnabled = vibration; 320f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 321f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds 322f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds /** 323f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * Sets whether notification posted to this channel should vibrate. Only modifiable before the 324f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * channel is submitted to the NotificationManager. 325b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 326f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds public void setVibrationPattern(long[] vibrationPattern) { 327f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds this.mVibration = vibrationPattern; 328b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 329b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 330b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 331b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns the id of this channel. 332b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 333b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public String getId() { 334b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mId; 335b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 336b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 337b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 338b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns the user visible name of this channel. 339b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 340b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public CharSequence getName() { 341b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mName; 342b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 343b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 344b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 345b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns the user specified importance {e.g. @link NotificationManager#IMPORTANCE_LOW} for 346b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * notifications posted to this channel. 347b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 348b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public int getImportance() { 349b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mImportance; 350b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 351b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 352b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 353b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Whether or not notifications posted to this channel can bypass the Do Not Disturb 354b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * {@link NotificationManager#INTERRUPTION_FILTER_PRIORITY} mode. 355b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 356b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public boolean canBypassDnd() { 357b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mBypassDnd; 358b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 359b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 360b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 361b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns the notification sound for this channel. 362b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 3630c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds public Uri getSound() { 3640c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds return mSound; 365b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 366b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 367b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 368b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns whether notifications posted to this channel trigger notification lights. 369b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 370b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public boolean shouldShowLights() { 371b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mLights; 372b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 373b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 374b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 375b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * Returns whether notifications posted to this channel always vibrate. 376b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 377b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public boolean shouldVibrate() { 378f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds return mVibrationEnabled; 379f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 380f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds 381f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds /** 382f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * Returns the vibration pattern for notifications posted to this channel. Will be ignored if 383f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds * vibration is not enabled ({@link #shouldVibrate()}. 384f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds */ 385f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds public long[] getVibrationPattern() { 386b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mVibration; 387b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 388b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 389b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 39085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * Returns whether or not notifications posted to this channel are shown on the lockscreen in 39185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * full or redacted form. 392b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 393b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public int getLockscreenVisibility() { 394b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return mLockscreenVisibility; 395b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 396b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 397b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 398baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * Returns whether notifications posted to this channel can appear as badges in a Launcher 399baff400fa5a93d157934818982fcf534327f9830Julia Reynolds * application. 400924eed1ca6d3fec5dae7eb0f9c11b8f23f628697Julia Reynolds * 401924eed1ca6d3fec5dae7eb0f9c11b8f23f628697Julia Reynolds * Note that badging may be disabled for other reasons. 402baff400fa5a93d157934818982fcf534327f9830Julia Reynolds */ 403baff400fa5a93d157934818982fcf534327f9830Julia Reynolds public boolean canShowBadge() { 404baff400fa5a93d157934818982fcf534327f9830Julia Reynolds return mShowBadge; 405baff400fa5a93d157934818982fcf534327f9830Julia Reynolds } 406baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 407baff400fa5a93d157934818982fcf534327f9830Julia Reynolds /** 40859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * Returns what group this channel belongs to. 40959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * 41059e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds * This is used only for visually grouping channels in the UI. 41159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds */ 41259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds public String getGroup() { 41359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds return mGroup; 41459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 41559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds 41659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds /** 4174036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds * @hide 418baff400fa5a93d157934818982fcf534327f9830Julia Reynolds */ 4194036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds @SystemApi 4204036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds public boolean isDeleted() { 4214036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds return mDeleted; 422baff400fa5a93d157934818982fcf534327f9830Julia Reynolds } 423baff400fa5a93d157934818982fcf534327f9830Julia Reynolds 424baff400fa5a93d157934818982fcf534327f9830Julia Reynolds /** 425b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @hide 426b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 427b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @SystemApi 42885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public int getUserLockedFields() { 42985769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds return mUserLockedFields; 43085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds } 43185769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 43285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds /** 43385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds * @hide 43485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds */ 43585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @SystemApi 436b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public void populateFromXml(XmlPullParser parser) { 43785769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds // Name, id, and importance are set in the constructor. 438b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds setBypassDnd(Notification.PRIORITY_DEFAULT 439b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds != safeInt(parser, ATT_PRIORITY, Notification.PRIORITY_DEFAULT)); 440b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds setLockscreenVisibility(safeInt(parser, ATT_VISIBILITY, DEFAULT_VISIBILITY)); 4410c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds setSound(safeUri(parser, ATT_SOUND)); 442b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds setLights(safeBool(parser, ATT_LIGHTS, false)); 443f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds enableVibration(safeBool(parser, ATT_VIBRATION_ENABLED, false)); 444f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds setVibrationPattern(safeLongArray(parser, ATT_VIBRATION, null)); 445baff400fa5a93d157934818982fcf534327f9830Julia Reynolds setShowBadge(safeBool(parser, ATT_SHOW_BADGE, false)); 4464036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds setDeleted(safeBool(parser, ATT_DELETED, false)); 44759e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds setGroup(parser.getAttributeValue(null, ATT_GROUP)); 44885769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds lockFields(safeInt(parser, ATT_USER_LOCKED, 0)); 449b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 450b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 451b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 452b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @hide 453b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 454b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @SystemApi 455b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public void writeXml(XmlSerializer out) throws IOException { 456b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.startTag(null, TAG_CHANNEL); 457b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute(null, ATT_ID, getId()); 458b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute(null, ATT_NAME, getName().toString()); 459b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (getImportance() != DEFAULT_IMPORTANCE) { 460b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute( 461b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds null, ATT_IMPORTANCE, Integer.toString(getImportance())); 462b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 463b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (canBypassDnd()) { 464b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute( 465b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds null, ATT_PRIORITY, Integer.toString(Notification.PRIORITY_MAX)); 466b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 467b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (getLockscreenVisibility() != DEFAULT_VISIBILITY) { 468b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute(null, ATT_VISIBILITY, 469b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds Integer.toString(getLockscreenVisibility())); 470b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 4710c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds if (getSound() != null) { 4720c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds out.attribute(null, ATT_SOUND, getSound().toString()); 473b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 474b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (shouldShowLights()) { 475b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.attribute(null, ATT_LIGHTS, Boolean.toString(shouldShowLights())); 476b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 477b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (shouldVibrate()) { 478f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds out.attribute(null, ATT_VIBRATION_ENABLED, Boolean.toString(shouldVibrate())); 479f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 480f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds if (getVibrationPattern() != null) { 481f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds out.attribute(null, ATT_VIBRATION, longArrayToString(getVibrationPattern())); 482b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 48385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds if (getUserLockedFields() != 0) { 48485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds out.attribute(null, ATT_USER_LOCKED, Integer.toString(getUserLockedFields())); 48585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds } 486baff400fa5a93d157934818982fcf534327f9830Julia Reynolds if (canShowBadge()) { 487baff400fa5a93d157934818982fcf534327f9830Julia Reynolds out.attribute(null, ATT_SHOW_BADGE, Boolean.toString(canShowBadge())); 488baff400fa5a93d157934818982fcf534327f9830Julia Reynolds } 4894036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds if (isDeleted()) { 4904036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds out.attribute(null, ATT_DELETED, Boolean.toString(isDeleted())); 4914036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds } 49259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getGroup() != null) { 49359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds out.attribute(null, ATT_GROUP, getGroup()); 49459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 49585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 496b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds out.endTag(null, TAG_CHANNEL); 497b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 498b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 499b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds /** 500b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds * @hide 501b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds */ 502b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @SystemApi 503b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public JSONObject toJson() throws JSONException { 504b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds JSONObject record = new JSONObject(); 505b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_ID, getId()); 506b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_NAME, getName()); 507b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (getImportance() != DEFAULT_IMPORTANCE) { 508b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_IMPORTANCE, 509b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds NotificationListenerService.Ranking.importanceToString(getImportance())); 510b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 511b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (canBypassDnd()) { 512b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_PRIORITY, Notification.PRIORITY_MAX); 513b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 514b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (getLockscreenVisibility() != DEFAULT_VISIBILITY) { 515b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_VISIBILITY, Notification.visibilityToString(getLockscreenVisibility())); 516b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 5170c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds if (getSound() != null) { 5180c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds record.put(ATT_SOUND, getSound().toString()); 519b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 520b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds record.put(ATT_LIGHTS, Boolean.toString(shouldShowLights())); 521f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds record.put(ATT_VIBRATION_ENABLED, Boolean.toString(shouldVibrate())); 52285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds record.put(ATT_USER_LOCKED, Integer.toString(getUserLockedFields())); 523f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds record.put(ATT_VIBRATION, longArrayToString(getVibrationPattern())); 524baff400fa5a93d157934818982fcf534327f9830Julia Reynolds record.put(ATT_SHOW_BADGE, Boolean.toString(canShowBadge())); 5254036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds record.put(ATT_DELETED, Boolean.toString(isDeleted())); 52659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds record.put(ATT_GROUP, getGroup()); 527b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return record; 528b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 529b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 530b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static Uri safeUri(XmlPullParser parser, String att) { 531b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds final String val = parser.getAttributeValue(null, att); 532b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return val == null ? null : Uri.parse(val); 533b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 534b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 535b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static int safeInt(XmlPullParser parser, String att, int defValue) { 536b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds final String val = parser.getAttributeValue(null, att); 537b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return tryParseInt(val, defValue); 538b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 539b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 540b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static int tryParseInt(String value, int defValue) { 541b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (TextUtils.isEmpty(value)) return defValue; 542b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds try { 543b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return Integer.parseInt(value); 544b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } catch (NumberFormatException e) { 545b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return defValue; 546b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 547b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 548b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 549b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds private static boolean safeBool(XmlPullParser parser, String att, boolean defValue) { 550b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds final String value = parser.getAttributeValue(null, att); 551b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (TextUtils.isEmpty(value)) return defValue; 552b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return Boolean.parseBoolean(value); 553b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 554b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 555f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private static long[] safeLongArray(XmlPullParser parser, String att, long[] defValue) { 556f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds final String attributeValue = parser.getAttributeValue(null, att); 557f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds if (TextUtils.isEmpty(attributeValue)) return defValue; 558f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds String[] values = attributeValue.split(DELIMITER); 559f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds long[] longValues = new long[values.length]; 560f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds for (int i = 0; i < values.length; i++) { 561f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds try { 562f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds longValues[i] = Long.parseLong(values[i]); 563f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } catch (NumberFormatException e) { 564f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds longValues[i] = 0; 565f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 566f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 567f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds return longValues; 568f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 569f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds 570f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds private static String longArrayToString(long[] values) { 571f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds StringBuffer sb = new StringBuffer(); 57259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (values != null) { 57359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds for (int i = 0; i < values.length - 1; i++) { 57459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds sb.append(values[i]).append(DELIMITER); 57559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 57659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds sb.append(values[values.length - 1]); 577f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 578f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds return sb.toString(); 579f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds } 580f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds 581b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public static final Creator<NotificationChannel> CREATOR = new Creator<NotificationChannel>() { 582b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 583b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public NotificationChannel createFromParcel(Parcel in) { 584b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return new NotificationChannel(in); 585b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 586b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 587b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 588b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public NotificationChannel[] newArray(int size) { 589b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return new NotificationChannel[size]; 590b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 591b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds }; 592b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 593b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 594b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public int describeContents() { 595b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return 0; 596b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 597b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 598b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 599b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public boolean equals(Object o) { 600b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (this == o) return true; 601b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (o == null || getClass() != o.getClass()) return false; 602b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 603b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds NotificationChannel that = (NotificationChannel) o; 604b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 60559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getImportance() != that.getImportance()) return false; 606b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (mBypassDnd != that.mBypassDnd) return false; 60759e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getLockscreenVisibility() != that.getLockscreenVisibility()) return false; 608b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds if (mLights != that.mLights) return false; 60959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getUserLockedFields() != that.getUserLockedFields()) return false; 610f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds if (mVibrationEnabled != that.mVibrationEnabled) return false; 611baff400fa5a93d157934818982fcf534327f9830Julia Reynolds if (mShowBadge != that.mShowBadge) return false; 61259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (isDeleted() != that.isDeleted()) return false; 61359e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getId() != null ? !getId().equals(that.getId()) : that.getId() != null) return false; 61459e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) { 61559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds return false; 61659e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 61759e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (getSound() != null ? !getSound().equals(that.getSound()) : that.getSound() != null) { 61859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds return false; 61959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds } 62059e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds if (!Arrays.equals(mVibration, that.mVibration)) return false; 62159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds return getGroup() != null ? getGroup().equals(that.getGroup()) : that.getGroup() == null; 62285769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 62385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds } 62485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds 62585769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds @Override 62685769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds public int hashCode() { 62759e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds int result = getId() != null ? getId().hashCode() : 0; 62859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + (getName() != null ? getName().hashCode() : 0); 62959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + getImportance(); 63085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds result = 31 * result + (mBypassDnd ? 1 : 0); 63159e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + getLockscreenVisibility(); 63259e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + (getSound() != null ? getSound().hashCode() : 0); 63385769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds result = 31 * result + (mLights ? 1 : 0); 634f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds result = 31 * result + Arrays.hashCode(mVibration); 63559e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + getUserLockedFields(); 636f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds result = 31 * result + (mVibrationEnabled ? 1 : 0); 637baff400fa5a93d157934818982fcf534327f9830Julia Reynolds result = 31 * result + (mShowBadge ? 1 : 0); 63859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + (isDeleted() ? 1 : 0); 63959e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds result = 31 * result + (getGroup() != null ? getGroup().hashCode() : 0); 64085769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds return result; 641b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 642b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds 643b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds @Override 644b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds public String toString() { 645b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds return "NotificationChannel{" + 646b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds "mId='" + mId + '\'' + 647b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds ", mName=" + mName + 648b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds ", mImportance=" + mImportance + 649b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds ", mBypassDnd=" + mBypassDnd + 650b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds ", mLockscreenVisibility=" + mLockscreenVisibility + 6510c299d4d6316d14e43d386b4562782083fe3c886Julia Reynolds ", mSound=" + mSound + 652b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds ", mLights=" + mLights + 653f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds ", mVibration=" + Arrays.toString(mVibration) + 65485769915e7ef10bef2b5338ed8f04d9b787924fbJulia Reynolds ", mUserLockedFields=" + mUserLockedFields + 655f57de46d0b16fea790dc29062bf5e47cf63bae3eJulia Reynolds ", mVibrationEnabled=" + mVibrationEnabled + 656baff400fa5a93d157934818982fcf534327f9830Julia Reynolds ", mShowBadge=" + mShowBadge + 6574036e8d4c636ae36f28585d283b522a7a97eaf72Julia Reynolds ", mDeleted=" + mDeleted + 65859e152e92e6ebb71bab974973ce29b4f8d11f7cfJulia Reynolds ", mGroup='" + mGroup + '\'' + 659b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds '}'; 660b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds } 661b5e44b796618c376cf535e43aaa86ea4522e7770Julia Reynolds} 662