Merge "Only show missed call notification for first hfp device" into rvc-qpr-dev
diff --git a/src/com/android/car/dialer/notification/InCallNotificationController.java b/src/com/android/car/dialer/notification/InCallNotificationController.java
index 464787b..18bf8d1 100644
--- a/src/com/android/car/dialer/notification/InCallNotificationController.java
+++ b/src/com/android/car/dialer/notification/InCallNotificationController.java
@@ -195,7 +195,8 @@
private Intent getIntent(String action, Call call) {
Intent intent = new Intent(action, null, mContext, NotificationService.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.putExtra(NotificationService.EXTRA_CALL_ID, call.getDetails().getTelecomCallId());
+ intent.putExtra(NotificationService.EXTRA_PHONE_NUMBER,
+ call.getDetails().getTelecomCallId());
return intent;
}
}
diff --git a/src/com/android/car/dialer/notification/MissedCallNotificationController.java b/src/com/android/car/dialer/notification/MissedCallNotificationController.java
index 1946006..ad5a6c8 100644
--- a/src/com/android/car/dialer/notification/MissedCallNotificationController.java
+++ b/src/com/android/car/dialer/notification/MissedCallNotificationController.java
@@ -152,7 +152,7 @@
R.plurals.notification_missed_call, callLogSize, callLogSize))
.setContentText(TelecomUtils.getBidiWrappedNumber(pair.first))
.setContentIntent(getContentPendingIntent())
- .setDeleteIntent(getDeleteIntent())
+ .setDeleteIntent(getDeleteIntent(callLog))
.setOnlyAlertOnce(true)
.setShowWhen(true)
.setWhen(callLog.getLastCallEndTimestamp())
@@ -198,14 +198,22 @@
return pendingIntent;
}
- private PendingIntent getDeleteIntent() {
- Intent intent = new Intent(NotificationService.ACTION_READ_ALL_MISSED, null, mContext,
+ private PendingIntent getDeleteIntent(PhoneCallLog phoneCallLog) {
+ Intent intent = new Intent(NotificationService.ACTION_READ_MISSED, null, mContext,
NotificationService.class);
+ String phoneNumberString = phoneCallLog.getPhoneNumberString();
+ if (TextUtils.isEmpty(phoneNumberString)) {
+ // For unknown call, pass the call log id to mark as read
+ intent.putExtra(NotificationService.EXTRA_CALL_LOG_ID, phoneCallLog.getPhoneLogId());
+ } else {
+ intent.putExtra(NotificationService.EXTRA_PHONE_NUMBER, phoneNumberString);
+ }
PendingIntent pendingIntent = PendingIntent.getService(
mContext,
- 0,
+ // Unique id for PendingIntents with different extras
+ /* requestCode= */(int) System.currentTimeMillis(),
intent,
- PendingIntent.FLAG_UPDATE_CURRENT);
+ PendingIntent.FLAG_IMMUTABLE);
return pendingIntent;
}
@@ -218,7 +226,7 @@
private PendingIntent getIntent(String action, String phoneNumberString) {
Intent intent = new Intent(action, null, mContext, NotificationService.class);
- intent.putExtra(NotificationService.EXTRA_CALL_ID, phoneNumberString);
+ intent.putExtra(NotificationService.EXTRA_PHONE_NUMBER, phoneNumberString);
return PendingIntent.getService(
mContext,
// Unique id for PendingIntents with different extras
diff --git a/src/com/android/car/dialer/notification/NotificationService.java b/src/com/android/car/dialer/notification/NotificationService.java
index 54abe15..948b0ca 100644
--- a/src/com/android/car/dialer/notification/NotificationService.java
+++ b/src/com/android/car/dialer/notification/NotificationService.java
@@ -41,8 +41,9 @@
static final String ACTION_SHOW_FULLSCREEN_UI = "CD.ACTION_SHOW_FULLSCREEN_UI";
static final String ACTION_CALL_BACK_MISSED = "CD.ACTION_CALL_BACK_MISSED";
static final String ACTION_MESSAGE_MISSED = "CD.ACTION_MESSAGE_MISSED";
- static final String ACTION_READ_ALL_MISSED = "CD.ACTION_READ_ALL_MISSED";
- static final String EXTRA_CALL_ID = "CD.EXTRA_CALL_ID";
+ static final String ACTION_READ_MISSED = "CD.ACTION_READ_MISSED";
+ static final String EXTRA_PHONE_NUMBER = "CD.EXTRA_PHONE_NUMBER";
+ static final String EXTRA_CALL_LOG_ID = "CD.EXTRA_CALL_LOG_ID";
@Override
public IBinder onBind(Intent intent) {
@@ -52,22 +53,22 @@
/** Create an intent to handle reading all missed call action and schedule for executing. */
public static void readAllMissedCall(Context context) {
Intent readAllMissedCallIntent = new Intent(context, NotificationService.class);
- readAllMissedCallIntent.setAction(ACTION_READ_ALL_MISSED);
+ readAllMissedCallIntent.setAction(ACTION_READ_MISSED);
context.startService(readAllMissedCallIntent);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
String action = intent.getAction();
- String callId = intent.getStringExtra(EXTRA_CALL_ID);
+ String phoneNumber = intent.getStringExtra(EXTRA_PHONE_NUMBER);
switch (action) {
case ACTION_ANSWER_CALL:
- answerCall(callId);
- InCallNotificationController.get().cancelInCallNotification(callId);
+ answerCall(phoneNumber);
+ InCallNotificationController.get().cancelInCallNotification(phoneNumber);
break;
case ACTION_DECLINE_CALL:
- declineCall(callId);
- InCallNotificationController.get().cancelInCallNotification(callId);
+ declineCall(phoneNumber);
+ InCallNotificationController.get().cancelInCallNotification(phoneNumber);
break;
case ACTION_SHOW_FULLSCREEN_UI:
Intent inCallActivityIntent = new Intent(getApplicationContext(),
@@ -75,18 +76,23 @@
inCallActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
inCallActivityIntent.putExtra(Constants.Intents.EXTRA_SHOW_INCOMING_CALL, true);
startActivity(inCallActivityIntent);
- InCallNotificationController.get().cancelInCallNotification(callId);
+ InCallNotificationController.get().cancelInCallNotification(phoneNumber);
break;
case ACTION_CALL_BACK_MISSED:
- UiCallManager.get().placeCall(callId);
- TelecomUtils.markCallLogAsRead(getApplicationContext(), callId);
+ UiCallManager.get().placeCall(phoneNumber);
+ TelecomUtils.markCallLogAsRead(getApplicationContext(), phoneNumber);
break;
case ACTION_MESSAGE_MISSED:
// TODO: call assistant to send message
- TelecomUtils.markCallLogAsRead(getApplicationContext(), callId);
+ TelecomUtils.markCallLogAsRead(getApplicationContext(), phoneNumber);
break;
- case ACTION_READ_ALL_MISSED:
- TelecomUtils.markCallLogAsRead(getApplicationContext(), callId);
+ case ACTION_READ_MISSED:
+ if (!TextUtils.isEmpty(phoneNumber)) {
+ TelecomUtils.markCallLogAsRead(getApplicationContext(), phoneNumber);
+ } else {
+ long callLogId = intent.getLongExtra(EXTRA_CALL_LOG_ID, -1);
+ TelecomUtils.markCallLogAsRead(getApplicationContext(), callLogId);
+ }
break;
default:
break;