Listen to LauncherUserInfo config changes and hide/unhide private space

entrypoint accordingly

Flag: android.multiuser.add_launcher_user_config

Bug: 346553745
Test: Manual - verified on device
Test: atest LauncherAppsTests

Change-Id: I202c4c76af4f96d5b3226daffcfebc2f9b9703b1
This commit is contained in:
Olivier Nshimiye
2024-09-10 19:20:42 +00:00
parent be17fb8a63
commit 39dee43e12
7 changed files with 80 additions and 24 deletions

View File

@@ -27,6 +27,7 @@ import android.content.pm.ApplicationInfo
import android.content.pm.LauncherActivityInfo
import android.content.pm.LauncherApps
import android.content.pm.ShortcutInfo
import android.multiuser.Flags.addLauncherUserConfig
import android.os.Bundle
import android.os.Flags.allowPrivateProfile
import android.os.IBinder
@@ -74,16 +75,14 @@ open class SystemApiWrapper @Inject constructor(@ApplicationContext context: Con
mContext.getSystemService(UserManager::class.java)!!.userProfiles?.forEach { user ->
mContext.getSystemService(LauncherApps::class.java)!!.getLauncherUserInfo(user)?.apply {
users[user] =
UserIconInfo(
user,
when (userType) {
UserManager.USER_TYPE_PROFILE_MANAGED -> UserIconInfo.TYPE_WORK
UserManager.USER_TYPE_PROFILE_CLONE -> UserIconInfo.TYPE_CLONED
UserManager.USER_TYPE_PROFILE_PRIVATE -> UserIconInfo.TYPE_PRIVATE
else -> UserIconInfo.TYPE_MAIN
},
userSerialNumber.toLong(),
)
if (addLauncherUserConfig())
UserIconInfo(
user,
getUserIconType(userType),
userSerialNumber.toLong(),
userConfig,
)
else UserIconInfo(user, getUserIconType(userType), userSerialNumber.toLong())
}
}
return users
@@ -192,4 +191,13 @@ open class SystemApiWrapper @Inject constructor(@ApplicationContext context: Con
override fun getApplicationInfoHash(appInfo: ApplicationInfo): String =
(appInfo.sourceDir?.hashCode() ?: 0).toString() + " " + appInfo.longVersionCode
fun getUserIconType(userType: String): Int {
return when (userType) {
UserManager.USER_TYPE_PROFILE_MANAGED -> UserIconInfo.TYPE_WORK
UserManager.USER_TYPE_PROFILE_CLONE -> UserIconInfo.TYPE_CLONED
UserManager.USER_TYPE_PROFILE_PRIVATE -> UserIconInfo.TYPE_PRIVATE
else -> UserIconInfo.TYPE_MAIN
}
}
}