175e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney/* 275e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * Copyright (C) 2014 The Android Open Source Project 375e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * 475e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * Licensed under the Apache License, Version 2.0 (the "License"); 575e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * you may not use this file except in compliance with the License. 675e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * You may obtain a copy of the License at 775e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * 875e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * http://www.apache.org/licenses/LICENSE-2.0 975e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * 1075e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * Unless required by applicable law or agreed to in writing, software 1175e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * distributed under the License is distributed on an "AS IS" BASIS, 1275e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1375e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * See the License for the specific language governing permissions and 1475e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney * limitations under the License. 1575e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney */ 1675e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney 1775e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinneypackage android.support.v4.app; 1875e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney 1975e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinneyimport android.app.Notification; 2043c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazenimport android.app.PendingIntent; 2143c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazenimport android.content.Context; 2243c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazenimport android.graphics.Bitmap; 2343c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazenimport android.os.Bundle; 2473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Songimport android.os.Parcelable; 2543c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazenimport android.widget.RemoteViews; 2643c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen 2743c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazenimport java.util.ArrayList; 2875e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney 2975e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinneyclass NotificationCompatApi21 { 3075e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney 311f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_CALL = Notification.CATEGORY_CALL; 321f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_MESSAGE = Notification.CATEGORY_MESSAGE; 331f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_EMAIL = Notification.CATEGORY_EMAIL; 341f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_EVENT = Notification.CATEGORY_EVENT; 351f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_PROMO = Notification.CATEGORY_PROMO; 361f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_ALARM = Notification.CATEGORY_ALARM; 371f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_PROGRESS = Notification.CATEGORY_PROGRESS; 381f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_SOCIAL = Notification.CATEGORY_SOCIAL; 391f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_ERROR = Notification.CATEGORY_ERROR; 401f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_TRANSPORT = Notification.CATEGORY_TRANSPORT; 411f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_SYSTEM = Notification.CATEGORY_SYSTEM; 421f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_SERVICE = Notification.CATEGORY_SERVICE; 431f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_RECOMMENDATION = Notification.CATEGORY_RECOMMENDATION; 441f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney public static final String CATEGORY_STATUS = Notification.CATEGORY_STATUS; 451f94e518424cbf818607f63e353f2a597ed1dd37Bryan Mawhinney 4673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static final String KEY_AUTHOR = "author"; 4773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static final String KEY_TEXT = "text"; 4873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static final String KEY_MESSAGES = "messages"; 4973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static final String KEY_REMOTE_INPUT = "remote_input"; 5073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static final String KEY_ON_REPLY = "on_reply"; 5173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static final String KEY_ON_READ = "on_read"; 5273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static final String KEY_PARTICIPANTS = "participants"; 5373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static final String KEY_TIMESTAMP = "timestamp"; 5473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 5543c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen public static class Builder implements NotificationBuilderWithBuilderAccessor, 5643c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen NotificationBuilderWithActions { 5743c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen private Notification.Builder b; 58300828fd69bd2bfcefaf54795d03492938efd971Alex Hills private Bundle mExtras; 59c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds private RemoteViews mContentView; 60c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds private RemoteViews mBigContentView; 61c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds private RemoteViews mHeadsUpContentView; 6243c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen 6343c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen public Builder(Context context, Notification n, 6443c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen CharSequence contentTitle, CharSequence contentText, CharSequence contentInfo, 6543c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen RemoteViews tickerView, int number, 6643c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen PendingIntent contentIntent, PendingIntent fullScreenIntent, Bitmap largeIcon, 6748d8878e34b0d9983166418378125b63faac9aabGriff Hazen int progressMax, int progress, boolean progressIndeterminate, boolean showWhen, 6843c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen boolean useChronometer, int priority, CharSequence subText, boolean localOnly, 6943c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen String category, ArrayList<String> people, Bundle extras, int color, 7043c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen int visibility, Notification publicVersion, String groupKey, boolean groupSummary, 71c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds String sortKey, RemoteViews contentView, RemoteViews bigContentView, 72c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds RemoteViews headsUpContentView) { 7343c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen b = new Notification.Builder(context) 7443c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setWhen(n.when) 7548d8878e34b0d9983166418378125b63faac9aabGriff Hazen .setShowWhen(showWhen) 7643c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setSmallIcon(n.icon, n.iconLevel) 7743c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setContent(n.contentView) 7843c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setTicker(n.tickerText, tickerView) 7943c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setSound(n.sound, n.audioStreamType) 8043c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setVibrate(n.vibrate) 8143c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setLights(n.ledARGB, n.ledOnMS, n.ledOffMS) 8243c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setOngoing((n.flags & Notification.FLAG_ONGOING_EVENT) != 0) 8343c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setOnlyAlertOnce((n.flags & Notification.FLAG_ONLY_ALERT_ONCE) != 0) 8443c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setAutoCancel((n.flags & Notification.FLAG_AUTO_CANCEL) != 0) 8543c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setDefaults(n.defaults) 8643c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setContentTitle(contentTitle) 8743c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setContentText(contentText) 8843c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setSubText(subText) 8943c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setContentInfo(contentInfo) 9043c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setContentIntent(contentIntent) 9143c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setDeleteIntent(n.deleteIntent) 9243c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setFullScreenIntent(fullScreenIntent, 9343c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen (n.flags & Notification.FLAG_HIGH_PRIORITY) != 0) 9443c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setLargeIcon(largeIcon) 9543c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setNumber(number) 9643c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setUsesChronometer(useChronometer) 9743c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setPriority(priority) 9843c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setProgress(progressMax, progress, progressIndeterminate) 9943c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setLocalOnly(localOnly) 10043c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setGroup(groupKey) 10143c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setGroupSummary(groupSummary) 10243c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setSortKey(sortKey) 10343c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setCategory(category) 10443c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setColor(color) 10543c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setVisibility(visibility) 10643c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen .setPublicVersion(publicVersion); 107300828fd69bd2bfcefaf54795d03492938efd971Alex Hills mExtras = new Bundle(); 108300828fd69bd2bfcefaf54795d03492938efd971Alex Hills if (extras != null) { 109300828fd69bd2bfcefaf54795d03492938efd971Alex Hills mExtras.putAll(extras); 110300828fd69bd2bfcefaf54795d03492938efd971Alex Hills } 11143c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen for (String person: people) { 11243c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen b.addPerson(person); 11343c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen } 114c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds mContentView = contentView; 115c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds mBigContentView = bigContentView; 116c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds mHeadsUpContentView = headsUpContentView; 11743c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen } 11843c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen 11943c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen @Override 12043c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen public void addAction(NotificationCompatBase.Action action) { 12143c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen NotificationCompatApi20.addAction(b, action); 12243c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen } 12343c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen 12443c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen @Override 12543c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen public Notification.Builder getBuilder() { 12643c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen return b; 12743c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen } 12843c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen 12910d7d250bc41b21059a90095e8b693c9e7bc3bc3Jorim Jaggi @Override 13043c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen public Notification build() { 131300828fd69bd2bfcefaf54795d03492938efd971Alex Hills b.setExtras(mExtras); 132c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds Notification notification = b.build(); 1333cf7cec91e0b038f9251273626a2237c802ecf67Julia Reynolds if (mContentView != null) { 1343cf7cec91e0b038f9251273626a2237c802ecf67Julia Reynolds notification.contentView = mContentView; 1353cf7cec91e0b038f9251273626a2237c802ecf67Julia Reynolds } 1363cf7cec91e0b038f9251273626a2237c802ecf67Julia Reynolds if (mBigContentView != null) { 1373cf7cec91e0b038f9251273626a2237c802ecf67Julia Reynolds notification.bigContentView = mBigContentView; 1383cf7cec91e0b038f9251273626a2237c802ecf67Julia Reynolds } 1393cf7cec91e0b038f9251273626a2237c802ecf67Julia Reynolds if (mHeadsUpContentView != null) { 1403cf7cec91e0b038f9251273626a2237c802ecf67Julia Reynolds notification.headsUpContentView = mHeadsUpContentView; 1413cf7cec91e0b038f9251273626a2237c802ecf67Julia Reynolds } 142c66cf89198b97dc7e62370e32010bfe4a98ce11eJulia Reynolds return notification; 14343c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen } 14443c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen } 14543c5718722bab1f836b7c94f2ec0bc19e653037cGriff Hazen 14675e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney public static String getCategory(Notification notif) { 14775e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney return notif.category; 14875e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney } 14973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 15073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song static Bundle getBundleForUnreadConversation(NotificationCompatBase.UnreadConversation uc) { 15173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song if (uc == null) { 15273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song return null; 15373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 15473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song Bundle b = new Bundle(); 15573342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song String author = null; 15673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song if (uc.getParticipants() != null && uc.getParticipants().length > 1) { 15773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song author = uc.getParticipants()[0]; 15873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 15973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song Parcelable[] messages = new Parcelable[uc.getMessages().length]; 16073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song for (int i = 0; i < messages.length; i++) { 16173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song Bundle m = new Bundle(); 16273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song m.putString(KEY_TEXT, uc.getMessages()[i]); 16373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song m.putString(KEY_AUTHOR, author); 16473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song messages[i] = m; 16573342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 16673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song b.putParcelableArray(KEY_MESSAGES, messages); 16773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song RemoteInputCompatBase.RemoteInput remoteInput = uc.getRemoteInput(); 16873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song if (remoteInput != null) { 16973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song b.putParcelable(KEY_REMOTE_INPUT, fromCompatRemoteInput(remoteInput)); 17073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 17173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song b.putParcelable(KEY_ON_REPLY, uc.getReplyPendingIntent()); 17273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song b.putParcelable(KEY_ON_READ, uc.getReadPendingIntent()); 17373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song b.putStringArray(KEY_PARTICIPANTS, uc.getParticipants()); 17473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song b.putLong(KEY_TIMESTAMP, uc.getLatestTimestamp()); 17573342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song return b; 17673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 17773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 17873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song static NotificationCompatBase.UnreadConversation getUnreadConversationFromBundle( 17973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song Bundle b, NotificationCompatBase.UnreadConversation.Factory factory, 18073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song RemoteInputCompatBase.RemoteInput.Factory remoteInputFactory) { 18173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song if (b == null) { 18273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song return null; 18373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 18473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song Parcelable[] parcelableMessages = b.getParcelableArray(KEY_MESSAGES); 18573342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song String[] messages = null; 18673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song if (parcelableMessages != null) { 18773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song String[] tmp = new String[parcelableMessages.length]; 18873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song boolean success = true; 18973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song for (int i = 0; i < tmp.length; i++) { 19073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song if (!(parcelableMessages[i] instanceof Bundle)) { 19173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song success = false; 19273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song break; 19373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 19473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song tmp[i] = ((Bundle) parcelableMessages[i]).getString(KEY_TEXT); 19573342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song if (tmp[i] == null) { 19673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song success = false; 19773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song break; 19873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 19973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 20073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song if (success) { 20173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song messages = tmp; 20273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } else { 20373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song return null; 20473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 20573342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 20673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 20773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song PendingIntent onRead = b.getParcelable(KEY_ON_READ); 20873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song PendingIntent onReply = b.getParcelable(KEY_ON_REPLY); 20973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 21073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song android.app.RemoteInput remoteInput = b.getParcelable(KEY_REMOTE_INPUT); 21173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 21273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song String[] participants = b.getStringArray(KEY_PARTICIPANTS); 21373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song if (participants == null || participants.length != 1) { 21473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song return null; 21573342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 21673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 21773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 21873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song return factory.build( 21973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song messages, 22073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song remoteInput != null ? toCompatRemoteInput(remoteInput, remoteInputFactory) : null, 22173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song onReply, 22273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song onRead, 22373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song participants, b.getLong(KEY_TIMESTAMP)); 22473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 22573342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 22673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static android.app.RemoteInput fromCompatRemoteInput( 22773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song RemoteInputCompatBase.RemoteInput src) { 22873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song return new android.app.RemoteInput.Builder(src.getResultKey()) 22973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song .setLabel(src.getLabel()) 23073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song .setChoices(src.getChoices()) 23173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song .setAllowFreeFormInput(src.getAllowFreeFormInput()) 23273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song .addExtras(src.getExtras()) 23373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song .build(); 23473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 23573342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song 23673342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song private static RemoteInputCompatBase.RemoteInput toCompatRemoteInput( 23773342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song android.app.RemoteInput remoteInput, 23873342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song RemoteInputCompatBase.RemoteInput.Factory factory) { 23973342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song return factory.build(remoteInput.getResultKey(), 24073342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song remoteInput.getLabel(), 24173342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song remoteInput.getChoices(), 24273342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song remoteInput.getAllowFreeFormInput(), 24373342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song remoteInput.getExtras()); 24473342e6c85cc814b7117fb3a642c230021d6b7e9Zhen Yu Song } 24575e2071f16bae2b22d1618026d10337daad862cfBryan Mawhinney} 246