diff options
| author | 2021-03-15 08:03:27 +0000 | |
|---|---|---|
| committer | 2021-03-15 08:03:27 +0000 | |
| commit | 3a84db48e63a290c5fdc5c12ed23f2ed354d13dc (patch) | |
| tree | 56067f52ef4cf220bc4cb58e513b2825067e163f | |
| parent | 16357f841175ca51045c28dfffd5f7d3987b95c8 (diff) | |
| parent | cc41fa62d8b216e713a6a9179d9ac55dbd3de7a5 (diff) | |
Merge "Fix launching app from work profile cannot show splash screen." into sc-dev
5 files changed, 20 insertions, 16 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java index 14fbaacb9613..50d8098e1d34 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java @@ -36,6 +36,7 @@ import android.graphics.drawable.ColorDrawable; import android.hardware.display.DisplayManager; import android.os.IBinder; import android.os.SystemClock; +import android.os.UserHandle; import android.util.Slog; import android.util.SparseArray; import android.view.Display; @@ -149,11 +150,12 @@ public class StartingSurfaceDrawer { context = displayContext; if (theme != context.getThemeResId() || labelRes != 0) { try { - context = context.createPackageContext( - activityInfo.packageName, CONTEXT_RESTRICTED); + context = context.createPackageContextAsUser(activityInfo.packageName, + CONTEXT_RESTRICTED, UserHandle.of(taskInfo.userId)); context.setTheme(theme); } catch (PackageManager.NameNotFoundException e) { - // Ignore + Slog.w(TAG, "Failed creating package context with package name " + + activityInfo.packageName + " for user " + taskInfo.userId, e); } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index ffea6a743a42..1e4907140fa2 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -2235,9 +2235,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { /** {@inheritDoc} */ @Override - public StartingSurface addSplashScreen(IBinder appToken, String packageName, int theme, - CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon, - int logo, int windowFlags, Configuration overrideConfig, int displayId) { + public StartingSurface addSplashScreen(IBinder appToken, int userId, String packageName, + int theme, CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, + int icon, int logo, int windowFlags, Configuration overrideConfig, int displayId) { if (!SHOW_SPLASH_SCREENS) { return null; } @@ -2264,10 +2264,12 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (theme != context.getThemeResId() || labelRes != 0) { try { - context = context.createPackageContext(packageName, CONTEXT_RESTRICTED); + context = context.createPackageContextAsUser(packageName, CONTEXT_RESTRICTED, + UserHandle.of(userId)); context.setTheme(theme); } catch (PackageManager.NameNotFoundException e) { - // Ignore + Slog.w(TAG, "Failed creating package context with package name " + + packageName + " for user " + userId, e); } } diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java index 0735977be72a..d512edfb066a 100644 --- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java +++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java @@ -714,9 +714,9 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { * @return The starting surface. * */ - public StartingSurface addSplashScreen(IBinder appToken, String packageName, int theme, - CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon, - int logo, int windowFlags, Configuration overrideConfig, int displayId); + StartingSurface addSplashScreen(IBinder appToken, int userId, String packageName, + int theme, CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, + int icon, int logo, int windowFlags, Configuration overrideConfig, int displayId); /** * Set or clear a window which can behave as the keyguard. diff --git a/services/core/java/com/android/server/wm/StartingSurfaceController.java b/services/core/java/com/android/server/wm/StartingSurfaceController.java index 6c4613526e88..070856949bb7 100644 --- a/services/core/java/com/android/server/wm/StartingSurfaceController.java +++ b/services/core/java/com/android/server/wm/StartingSurfaceController.java @@ -52,8 +52,8 @@ public class StartingSurfaceController { int theme, CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon, int logo, int windowFlags, Configuration overrideConfig, int displayId) { if (!DEBUG_ENABLE_SHELL_DRAWER) { - return mService.mPolicy.addSplashScreen(activity.token, packageName, theme, - compatInfo, nonLocalizedLabel, labelRes, icon, logo, windowFlags, + return mService.mPolicy.addSplashScreen(activity.token, activity.mUserId, packageName, + theme, compatInfo, nonLocalizedLabel, labelRes, icon, logo, windowFlags, overrideConfig, displayId); } diff --git a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java index 7822a8514a13..ae8e2ded359d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java +++ b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java @@ -100,9 +100,9 @@ class TestWindowManagerPolicy implements WindowManagerPolicy { } @Override - public StartingSurface addSplashScreen(IBinder appToken, String packageName, int theme, - CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, int icon, - int logo, int windowFlags, Configuration overrideConfig, int displayId) { + public StartingSurface addSplashScreen(IBinder appToken, int userId, String packageName, + int theme, CompatibilityInfo compatInfo, CharSequence nonLocalizedLabel, int labelRes, + int icon, int logo, int windowFlags, Configuration overrideConfig, int displayId) { final com.android.server.wm.WindowState window; final ActivityRecord activity; final WindowManagerService wm = mWmSupplier.get(); |