From 4c25fe2724d64e65bcbab9c6474a0416155094c7 Mon Sep 17 00:00:00 2001 From: Yu Ning Date: Tue, 2 Dec 2014 17:52:42 +0800 Subject: [PATCH] Fix Settings app crash for devices with no USB support. On emulator and any device that does not support USB connection, the Settings app crashes as soon as the user tries to view the details of an installed app. This is because the InstalledAppDetails activity assumes that the USB service is always started, which is no longer true due to a change in SystemServer.java (frameworks/base, Change-Id I6dad511c652bcacc085f27ede5f8f22a6982c6bd). Adding null checks fixes this issue. Change-Id: I85263fb795ee06bd61ba28ec12a7161c1f17f4cc Signed-off-by: Yu Ning --- .../applications/InstalledAppDetails.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index 4b1bc1051d8..b1ba42290f6 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -727,10 +727,12 @@ public class InstalledAppDetails extends Fragment if (localLOGV) Log.i(TAG, "Have " + prefActList.size() + " number of activities in preferred list"); boolean hasUsbDefaults = false; - try { - hasUsbDefaults = mUsbManager.hasDefaults(packageName, UserHandle.myUserId()); - } catch (RemoteException e) { - Log.e(TAG, "mUsbManager.hasDefaults", e); + if (mUsbManager != null) { // may be null because USB service is optional + try { + hasUsbDefaults = mUsbManager.hasDefaults(packageName, UserHandle.myUserId()); + } catch (RemoteException e) { + Log.e(TAG, "mUsbManager.hasDefaults", e); + } } boolean hasBindAppWidgetPermission = mAppWidgetManager.hasBindAppWidgetPermission(mAppEntry.info.packageName); @@ -1378,10 +1380,12 @@ public class InstalledAppDetails extends Fragment showDialogInner(DLG_SPECIAL_DISABLE, 0); } else if(v == mActivitiesButton) { mPm.clearPackagePreferredActivities(packageName); - try { - mUsbManager.clearDefaults(packageName, UserHandle.myUserId()); - } catch (RemoteException e) { - Log.e(TAG, "mUsbManager.clearDefaults", e); + if (mUsbManager != null) { // may be null because USB service is optional + try { + mUsbManager.clearDefaults(packageName, UserHandle.myUserId()); + } catch (RemoteException e) { + Log.e(TAG, "mUsbManager.clearDefaults", e); + } } mAppWidgetManager.setBindAppWidgetPermission(packageName, false); TextView autoLaunchTitleView =