Fix crash in onRestoreInstanceState
bug: 34973084
Test: Manually verified crash stops
Change-Id: Ic28f98bc422d12f0db5c5921e89008eb2da1862d
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 0b1f0aa..aa6f18f 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -531,16 +531,7 @@
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
- if (mSupportsAlwaysUseOption) {
- final int checkedPos = mAdapterView.getCheckedItemPosition();
- final boolean hasValidSelection = checkedPos != ListView.INVALID_POSITION;
- mLastSelected = checkedPos;
- setAlwaysButtonEnabled(hasValidSelection, checkedPos, true);
- mOnceButton.setEnabled(hasValidSelection);
- if (hasValidSelection) {
- mAdapterView.setSelection(checkedPos);
- }
- }
+ resetAlwaysOrOnceButtonBar();
}
private boolean hasManagedProfile() {
@@ -577,7 +568,13 @@
boolean enabled = false;
if (hasValidSelection) {
ResolveInfo ri = mAdapter.resolveInfoForPosition(checkedPos, filtered);
- if (ri.targetUserId == UserHandle.USER_CURRENT) {
+ if (ri == null) {
+ Log.e(TAG, "Invalid position supplied to setAlwaysButtonEnabled");
+ return;
+ } else if (ri.targetUserId != UserHandle.USER_CURRENT) {
+ Log.e(TAG, "Attempted to set selection to resolve info for another user");
+ return;
+ } else {
enabled = true;
}
}