diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/PreferredComponent.java | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/pm/PreferredComponent.java b/services/core/java/com/android/server/pm/PreferredComponent.java index 18caafdaa56a..f3b146464864 100644 --- a/services/core/java/com/android/server/pm/PreferredComponent.java +++ b/services/core/java/com/android/server/pm/PreferredComponent.java @@ -28,7 +28,8 @@ import com.android.internal.util.XmlUtils; import com.android.modules.utils.TypedXmlPullParser; import com.android.modules.utils.TypedXmlSerializer; import com.android.server.LocalServices; -import com.android.server.pm.pkg.PackageUserState; +import com.android.server.pm.pkg.PackageStateInternal; +import com.android.server.pm.pkg.PackageUserStateInternal; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -218,11 +219,15 @@ public class PreferredComponent { continue; } - // Avoid showing the disambiguation dialog if the package which is installed with - // reason INSTALL_REASON_DEVICE_SETUP. - final PackageUserState pkgUserState = - pmi.getPackageStateInternal(ai.packageName).getUserStates().get(userId); - if (pkgUserState != null && pkgUserState.getInstallReason() + // Avoid showing the disambiguation dialog if the package is not installed or + // installed with reason INSTALL_REASON_DEVICE_SETUP. + final PackageStateInternal ps = pmi.getPackageStateInternal(ai.packageName); + if (ps == null) { + continue; + } + final PackageUserStateInternal pkgUserState = ps.getUserStates().get(userId); + if (pkgUserState == null + || pkgUserState.getInstallReason() == PackageManager.INSTALL_REASON_DEVICE_SETUP) { continue; } |