From 8ea210c48f6d80c2631bbaf2a1902124acdb3c29 Mon Sep 17 00:00:00 2001 From: kwaky Date: Wed, 8 Jul 2020 19:34:17 -0700 Subject: [PATCH] Add null check for resolveInfo and Automotive feature. AAOS uses multi-user model, and apps become queriable after user is unlocked. Thus we need to make sure that the querying happens at the right time with the right user with resolveActivityAsUser. In order not to affect the stability, we can use the null check + Automotive check for R. This null check + Automotive check can be removed when resolving Activity as User is implemented in S+. Bug: 158508455 Test: Manual Change-Id: I58e37f795136508ef7bb53c40214ed3c76f588bf --- .../keyguard/KeyguardUpdateMonitor.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index 34c85877577be..d96662e33797e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -227,6 +227,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private final Context mContext; private final boolean mIsPrimaryUser; + private final boolean mIsAutomotive; private final StatusBarStateController mStatusBarStateController; HashMap mSimDatas = new HashMap<>(); HashMap mServiceStates = new HashMap(); @@ -1749,6 +1750,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mFaceManager.addLockoutResetCallback(mFaceLockoutResetCallback); } + mIsAutomotive = isAutomotive(); + ActivityManagerWrapper.getInstance().registerTaskStackListener(mTaskStackListener); mUserManager = context.getSystemService(UserManager.class); mIsPrimaryUser = mUserManager.isPrimaryUser(); @@ -2469,6 +2472,14 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab .addCategory(Intent.CATEGORY_HOME); ResolveInfo resolveInfo = mContext.getPackageManager().resolveActivity(homeIntent, 0 /* flags */); + + // TODO(b/160971249): Replace in the future by resolving activity as user. + if (resolveInfo == null && mIsAutomotive) { + Log.w(TAG, "resolveNeedsSlowUnlockTransition: returning false since activity " + + "could not be resolved."); + return false; + } + return FALLBACK_HOME_COMPONENT.equals(resolveInfo.getComponentInfo().getComponentName()); } @@ -2539,6 +2550,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab return false; } + private boolean isAutomotive() { + return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE); + } + /** * Remove the given observer's callback. * @@ -2966,5 +2981,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab pw.println(" " + time + " " + model.toString()); } } + if (mIsAutomotive) { + pw.println(" Running on Automotive build"); + } } }