diff options
author | Brandon Maxwell <maxwelb@google.com> | 2016-03-01 16:13:58 -0800 |
---|---|---|
committer | Brandon Maxwell <maxwelb@google.com> | 2016-03-01 17:29:35 -0800 |
commit | e924ffb4ed7ed294d94d681b126cecaf50cae5b3 (patch) | |
tree | f0cafcde814ab691e17f5955c9bd393080bf551b /InCallUI/src/com/android | |
parent | 0c00c3ef23e3cc522a56f4aaa1dd623d5a0475a4 (diff) |
Added public notification for calls
+ Previously we didn't have a notification for ongoing/incoming calls
to show users when they're on the lock screen and have their
notification settings set to 'hide sensitive notification content'.
This change adds that notification, to disambiguate between
notifications for calls and other notifications such as those for
missed calls.
+ This notification matches the version shown when the device is
unlocked except that we choose to not show work call information as
that is related to contact info.
See http://screen/zYZseSS1d54
Bug: 13387034
Change-Id: I02290e585a9b46eb9207adf8258a67d29882518b
Diffstat (limited to 'InCallUI/src/com/android')
-rw-r--r-- | InCallUI/src/com/android/incallui/StatusBarNotifier.java | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java index 315c0d0ae..946e0ebd0 100644 --- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java +++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java @@ -51,7 +51,6 @@ import com.android.contacts.common.testing.NeededForTesting; import com.android.contacts.common.util.BitmapUtil; import com.android.contacts.common.util.ContactDisplayUtils; import com.android.dialer.R; -import com.android.incallui.Call.State; import com.android.incallui.ContactInfoCache.ContactCacheEntry; import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback; import com.android.incallui.InCallPresenter.InCallState; @@ -268,9 +267,23 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener, } /* - * Nothing more to check...build and send it. + * This builder is used for the notification shown when the device is locked and the user + * has set their notification settings to 'hide sensitive content' + * {@see Notification.Builder#setPublicVersion}. + */ + Notification.Builder publicBuilder = new Notification.Builder(mContext); + publicBuilder.setSmallIcon(iconResId) + .setColor(mContext.getResources().getColor(R.color.dialer_theme_color)) + // Hide work call state for the lock screen notification + .setContentTitle(getContentString(call, ContactsUtils.USER_TYPE_CURRENT)); + setNotificationWhen(call, callState, publicBuilder); + + /* + * Builder for the notification shown when the device is unlocked or the user has set their + * notification settings to 'show all notification content'. */ final Notification.Builder builder = getNotificationBuilder(); + builder.setPublicVersion(publicBuilder.build()); // Set up the main intent to send the user to the in-call screen final PendingIntent inCallPendingIntent = createLaunchPendingIntent(); @@ -335,12 +348,7 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener, private void createIncomingCallNotification( Call call, int state, Notification.Builder builder) { - if (state == Call.State.ACTIVE) { - builder.setUsesChronometer(true); - builder.setWhen(call.getConnectTimeMillis()); - } else { - builder.setUsesChronometer(false); - } + setNotificationWhen(call, state, builder); // Add hang up option for any active calls (active | onhold), outgoing calls (dialing). if (state == Call.State.ACTIVE || @@ -358,6 +366,20 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener, } } + /* + * Sets the notification's when section as needed. For active calls, this is explicitly set as + * the duration of the call. For all other states, the notification will automatically show the + * time at which the notification was created. + */ + private void setNotificationWhen(Call call, int state, Notification.Builder builder) { + if (state == Call.State.ACTIVE) { + builder.setUsesChronometer(true); + builder.setWhen(call.getConnectTimeMillis()); + } else { + builder.setUsesChronometer(false); + } + } + /** * Checks the new notification data and compares it against any notification that we * are already displaying. If the data is exactly the same, we return false so that |