[MultiUser] Ensure sysyuig activities use user 0

Use packagename to determine if intent is in the same package and which
user should be used when launching the activity.

Bug: 229730387
Test: Manual on device
Change-Id: I1f1033dc875899567edd42a6fc67f9e6124fce73
Merged-In: I1f1033dc875899567edd42a6fc67f9e6124fce73
This commit is contained in:
Aaron Liu
2022-04-19 16:45:35 +00:00
parent f08f61e9f9
commit 628fc5322f
2 changed files with 12 additions and 3 deletions

View File

@@ -725,4 +725,10 @@
<item>@*android:string/status_bar_alarm_clock</item>
<item>@*android:string/status_bar_call_strength</item>
</string-array>
<!-- Packages of SystemUI -->
<string-array name="system_ui_packages" translatable="false">
<item>com.android.keyguard</item>
<item>com.android.systemui</item>
</string-array>
</resources>

View File

@@ -4509,9 +4509,12 @@ public class CentralSurfaces extends CoreStartable implements
* @return UserHandle
*/
private UserHandle getActivityUserHandle(Intent intent) {
if (intent.getComponent() != null
&& mContext.getPackageName().equals(intent.getComponent().getPackageName())) {
return new UserHandle(UserHandle.myUserId());
String[] packages = mContext.getResources().getStringArray(R.array.system_ui_packages);
for (String pkg : packages) {
if (intent.getComponent() == null) break;
if (pkg.equals(intent.getComponent().getPackageName())) {
return new UserHandle(UserHandle.myUserId());
}
}
return UserHandle.CURRENT;
}