diff options
author | Sudheer Shanka <sudheersai@google.com> | 2023-03-23 00:55:59 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-03-23 00:55:59 +0000 |
commit | 2e5f9bb466e73f4c9ce70fdd6dc67f3f9c70a5ec (patch) | |
tree | b50e75b49c07640e9ee21ee090d46fa6711e91ba | |
parent | 1fe4b3c2d06454507b785011ad2d0bb0d3296610 (diff) | |
parent | 25f2d269e38d88e4543bd75e02e127ba0a0d6a49 (diff) | |
download | Dialer-2e5f9bb466e73f4c9ce70fdd6dc67f3f9c70a5ec.tar.gz |
Apply delivery group policies to CLOSE_SYSTEM_DIALOG broadcast. am: f1e0587df8 am: 25f2d269e3
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Dialer/+/22109992
Change-Id: Icab132efc6d6f77af483cda73b5185f44aba8e01
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | java/com/android/dialer/app/calllog/MissedCallNotifier.java | 12 | ||||
-rw-r--r-- | java/com/android/incallui/NotificationBroadcastReceiver.java | 17 |
2 files changed, 27 insertions, 2 deletions
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java index f2d2af834..64536c8b0 100644 --- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java +++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java @@ -17,6 +17,7 @@ package com.android.dialer.app.calllog; import static com.android.dialer.app.DevicePolicyResources.NOTIFICATION_MISSED_WORK_CALL_TITLE; +import android.app.BroadcastOptions; import android.app.Notification; import android.app.Notification.Builder; import android.app.PendingIntent; @@ -27,6 +28,7 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.drawable.Icon; import android.net.Uri; +import android.os.Bundle; import android.provider.CallLog.Calls; import android.service.notification.StatusBarNotification; import android.support.annotation.NonNull; @@ -44,6 +46,7 @@ import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; import android.util.ArraySet; + import com.android.contacts.common.ContactsUtils; import com.android.dialer.app.MainComponent; import com.android.dialer.app.R; @@ -68,6 +71,7 @@ import com.android.dialer.precall.PreCall; import com.android.dialer.theme.base.ThemeComponent; import com.android.dialer.util.DialerUtils; import com.android.dialer.util.IntentUtil; + import java.util.Iterator; import java.util.List; import java.util.Set; @@ -500,6 +504,12 @@ public class MissedCallNotifier implements Worker<Pair<Integer, String>, Void> { /** Closes open system dialogs and the notification shade. */ private void closeSystemDialogs(Context context) { - context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); + final Intent intent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS) + .addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + final Bundle options = BroadcastOptions.makeBasic() + .setDeliveryGroupPolicy(BroadcastOptions.DELIVERY_GROUP_POLICY_MOST_RECENT) + .setDeferralPolicy(BroadcastOptions.DEFERRAL_POLICY_UNTIL_ACTIVE) + .toBundle(); + context.sendBroadcast(intent, null /* receiverPermission */, options); } } diff --git a/java/com/android/incallui/NotificationBroadcastReceiver.java b/java/com/android/incallui/NotificationBroadcastReceiver.java index 241d8ed48..91421ea1b 100644 --- a/java/com/android/incallui/NotificationBroadcastReceiver.java +++ b/java/com/android/incallui/NotificationBroadcastReceiver.java @@ -16,14 +16,17 @@ package com.android.incallui; +import android.app.BroadcastOptions; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Build.VERSION_CODES; +import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.telecom.CallAudioState; import android.telecom.VideoProfile; + import com.android.dialer.common.LogUtil; import com.android.dialer.common.concurrent.DialerExecutorComponent; import com.android.dialer.logging.DialerImpression; @@ -32,6 +35,7 @@ import com.android.incallui.call.CallList; import com.android.incallui.call.DialerCall; import com.android.incallui.call.TelecomAdapter; import com.android.incallui.speakeasy.SpeakEasyCallManager; + import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -97,7 +101,7 @@ public class NotificationBroadcastReceiver extends BroadcastReceiver { } else if (action.equals(ACTION_DECLINE_VIDEO_UPGRADE_REQUEST)) { declineUpgradeRequest(); } else if (action.equals(ACTION_PULL_EXTERNAL_CALL)) { - context.sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); + closeSystemDialogs(context); int notificationId = intent.getIntExtra(EXTRA_NOTIFICATION_ID, -1); InCallPresenter.getInstance().getExternalCallNotifier().pullExternalCall(notificationId); } else if (action.equals(ACTION_TURN_ON_SPEAKER)) { @@ -220,4 +224,15 @@ public class NotificationBroadcastReceiver extends BroadcastReceiver { } } } + + /** Closes open system dialogs and the notification shade. */ + private void closeSystemDialogs(Context context) { + final Intent intent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS) + .addFlags(Intent.FLAG_RECEIVER_FOREGROUND); + final Bundle options = BroadcastOptions.makeBasic() + .setDeliveryGroupPolicy(BroadcastOptions.DELIVERY_GROUP_POLICY_MOST_RECENT) + .setDeferralPolicy(BroadcastOptions.DEFERRAL_POLICY_UNTIL_ACTIVE) + .toBundle(); + context.sendBroadcast(intent, null /* receiverPermission */, options); + } } |