diff options
author | Xin Li <delphij@google.com> | 2023-08-14 15:41:52 -0700 |
---|---|---|
committer | Xin Li <delphij@google.com> | 2023-08-14 15:41:52 -0700 |
commit | 0d50ee6dfe8dc04a917373b86d51e72873ebe67a (patch) | |
tree | cd3d0f355599e8e88cb155a671101abac07dcf53 | |
parent | 61fb2fb90961f9e86ec2253811a45b6bce31c610 (diff) | |
parent | 4b4f7869346fe980e4669681c31bccd007e556ca (diff) | |
download | Dialer-0d50ee6dfe8dc04a917373b86d51e72873ebe67a.tar.gz |
Merge Android U (ab/10368041)tmp_amf_298295554
Bug: 291102124
Merged-In: I2b71c400d1cd61b69a73cc169b7a19615f819de5
Change-Id: I642bef8bdad79e66ea8ffbd8d2f37555f7ba84e7
-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); + } } |