From 2354c5eb92016a72688b80c80fb6b94ce8ac4047 Mon Sep 17 00:00:00 2001 From: Yao Chen Date: Wed, 24 Sep 2014 14:38:32 -0700 Subject: [PATCH] Check the return value of bindService, and notify media browser client onConnectionFailed if it returns false. Bug: 17637058 Change-Id: I2284c3a982e5ac6323f51ff7d98aae7699c695e5 --- .../android/media/browse/MediaBrowser.java | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/media/java/android/media/browse/MediaBrowser.java b/media/java/android/media/browse/MediaBrowser.java index 34713e7b86db6..0f9bdede7df95 100644 --- a/media/java/android/media/browse/MediaBrowser.java +++ b/media/java/android/media/browse/MediaBrowser.java @@ -141,26 +141,31 @@ public final class MediaBrowser { final ServiceConnection thisConnection = mServiceConnection = new MediaServiceConnection(); + boolean bound = false; try { - mContext.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE); + if (mContext.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE)) { + bound = true; + } } catch (Exception ex) { Log.e(TAG, "Failed binding to service " + mServiceComponent); + } + if (!bound) { // Tell them that it didn't work. We are already on the main thread, // but we don't want to do callbacks inside of connect(). So post it, // and then check that we are on the same ServiceConnection. We know // we won't also get an onServiceConnected or onServiceDisconnected, // so we won't be doing double callbacks. mHandler.post(new Runnable() { - @Override - public void run() { - // Ensure that nobody else came in or tried to connect again. - if (thisConnection == mServiceConnection) { - forceCloseConnection(); - mCallback.onConnectionFailed(); - } + @Override + public void run() { + // Ensure that nobody else came in or tried to connect again. + if (thisConnection == mServiceConnection) { + forceCloseConnection(); + mCallback.onConnectionFailed(); } - }); + } + }); } if (DBG) {