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 <yu.ning@intel.com>
This commit is contained in:
Yu Ning
2014-12-02 17:52:42 +08:00
parent c5aa905a31
commit 4c25fe2724

View File

@@ -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 =