Catch ISE from getExtras()
onConnected() will be called when the state of browser is
CONNECT_STATE_CONNECTED. But ISE is happening when getExtras() is called
in onConnected().
This CL catches the exception and leave some logs.
Bug: 120288356
Test: ./gradlew :media:connectedCheck
Change-Id: I663e582b0d34194f40640a45fd93bbf892c1782b
diff --git a/media/src/main/java/android/support/v4/media/MediaBrowserCompat.java b/media/src/main/java/android/support/v4/media/MediaBrowserCompat.java
index 69cf852..2ab22a5 100644
--- a/media/src/main/java/android/support/v4/media/MediaBrowserCompat.java
+++ b/media/src/main/java/android/support/v4/media/MediaBrowserCompat.java
@@ -211,6 +211,7 @@
* </p>
*/
public void connect() {
+ Log.d(TAG, "Connecting to a MediaBrowserService.");
mImpl.connect();
}
@@ -253,6 +254,7 @@
/**
* Gets any extras for the media service.
*
+ * @return The extra bundle if it is connected and set, and {@code null} otherwise.
* @throws IllegalStateException if not connected.
*/
public @Nullable
@@ -1890,7 +1892,14 @@
@Override
public void onConnected() {
- Bundle extras = mBrowserFwk.getExtras();
+ Bundle extras;
+ try {
+ extras = mBrowserFwk.getExtras();
+ } catch (IllegalStateException e) {
+ // Should not be here since onConnected() will be called in a connected state.
+ Log.e(TAG, "Unexpected IllegalStateException", e);
+ return;
+ }
if (extras == null) {
return;
}