From dda4f2c6029fc31e499a79768e0add80b6170e6f Mon Sep 17 00:00:00 2001 From: "sfufa@google.com" Date: Tue, 19 Oct 2021 09:57:03 -0700 Subject: [PATCH] [Work Profile] Fix NPE on WorkModeSwitch Bug: 202868251 Test: manual Change-Id: I16e149e0aab1b53f7a0e753f353ccace08cf6b71 --- .../android/launcher3/allapps/AllAppsContainerView.java | 5 +++-- .../android/launcher3/allapps/WorkProfileManager.java | 9 ++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index f154dd49ac..3ba6ea4de9 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -485,8 +485,9 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo mViewPager = (AllAppsPagedView) newView; mViewPager.initParentViews(this); mViewPager.getPageIndicator().setOnActivePageChangedListener(this); - mWorkManager.attachWorkModeSwitch(); - mWorkManager.getWorkModeSwitch().post(() -> mAH[AdapterHolder.WORK].applyPadding()); + if (mWorkManager.attachWorkModeSwitch()) { + mWorkManager.getWorkModeSwitch().post(() -> mAH[AdapterHolder.WORK].applyPadding()); + } } else { mWorkManager.detachWorkModeSwitch(); mViewPager = null; diff --git a/src/com/android/launcher3/allapps/WorkProfileManager.java b/src/com/android/launcher3/allapps/WorkProfileManager.java index 54a5c516b7..e223248866 100644 --- a/src/com/android/launcher3/allapps/WorkProfileManager.java +++ b/src/com/android/launcher3/allapps/WorkProfileManager.java @@ -28,6 +28,7 @@ import android.os.UserManager; import android.util.Log; import androidx.annotation.IntDef; +import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import com.android.launcher3.R; @@ -127,11 +128,11 @@ public class WorkProfileManager implements PersonalWorkSlidingTabStrip.OnActiveP /** * Creates and attaches for profile toggle button to {@link AllAppsContainerView} */ - public void attachWorkModeSwitch() { + public boolean attachWorkModeSwitch() { if (!mAllApps.getAppsStore().hasModelFlag( FLAG_HAS_SHORTCUT_PERMISSION | FLAG_QUIET_MODE_CHANGE_PERMISSION)) { - Log.e(TAG, "Unable to attach widget; Missing required permissions"); - return; + Log.e(TAG, "unable to attach work mode switch; Missing required permissions"); + return false; } if (mWorkModeSwitch == null) { mWorkModeSwitch = (WorkModeSwitch) mAllApps.getLayoutInflater().inflate( @@ -144,6 +145,7 @@ public class WorkProfileManager implements PersonalWorkSlidingTabStrip.OnActiveP getAH().applyPadding(); } mWorkModeSwitch.updateCurrentState(mCurrentState == STATE_ENABLED); + return true; } /** @@ -165,6 +167,7 @@ public class WorkProfileManager implements PersonalWorkSlidingTabStrip.OnActiveP return mMatcher; } + @Nullable public WorkModeSwitch getWorkModeSwitch() { return mWorkModeSwitch; }