From 0fa350eeaf0c9ee7b00b8450f22670a9ec4e38bd Mon Sep 17 00:00:00 2001 From: Jerry Zhang Date: Wed, 28 Mar 2018 16:50:46 -0700 Subject: [PATCH] Explicity receive sticky usb intent Sticky intents are both returned by onReceive and broadcast to the receiver. In some cases though, the receiver could be unregistered so quickly that it has no time to receive it. When this happens the screen is not refreshed, so explicity handle the intent to ensure a refresh. Fixes: 74255559 Test: screen refreshed property in multi-window Change-Id: I2480dc35e28f98561ffed4b557f4bdaf83a73e9c --- .../connecteddevice/usb/UsbConnectionBroadcastReceiver.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/connecteddevice/usb/UsbConnectionBroadcastReceiver.java b/src/com/android/settings/connecteddevice/usb/UsbConnectionBroadcastReceiver.java index 7ad3ee6b5a7..1b525352d0f 100644 --- a/src/com/android/settings/connecteddevice/usb/UsbConnectionBroadcastReceiver.java +++ b/src/com/android/settings/connecteddevice/usb/UsbConnectionBroadcastReceiver.java @@ -98,7 +98,11 @@ public class UsbConnectionBroadcastReceiver extends BroadcastReceiver implements final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(UsbManager.ACTION_USB_STATE); intentFilter.addAction(UsbManager.ACTION_USB_PORT_CHANGED); - mContext.registerReceiver(this, intentFilter); + final Intent intent = mContext.registerReceiver(this, intentFilter); + // TODO b/77240599 use an api instead of sticky intent + if (intent != null) { + onReceive(mContext, intent); + } mListeningToUsbEvents = true; } }