Я пытаюсь получить доступ к UserHandle рабочего профиля на Android для моего приложения запуска, чтобы я мог отображать рабочие приложения. Я не могу найти способ сделать это до Android 15 (SDK 30), но мне нужно, чтобы это работало на Android 8 (SDK 26). Рабочие профили были добавлены в Android 5 (SDK 21). Вот написанный мной код, который работает для SDK 30 и выше:
@RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
fun doesWorkProfileExist(context: Context): Boolean {
val launcherApps =
context.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
val userManager =
context.getSystemService(Context.USER_SERVICE) as UserManager
for (userInfo in userManager.userProfiles) {
if (launcherApps.getLauncherUserInfo(userInfo)?.userType == USER_TYPE_PROFILE_MANAGED) {
return true
}
}
return false
}
@RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
fun getWorkProfile(context: Context): UserHandle? {
if (doesWorkProfileExist(context)) {
val userManager = context.getSystemService(Context.USER_SERVICE) as UserManager
val profiles = userManager.userProfiles
val launcherApps =
context.getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
for (userInfo in profiles) {
if (launcherApps.getLauncherUserInfo(userInfo)?.userType == UserManager.USER_TYPE_PROFILE_MANAGED) {
return userInfo
}
}
}
return null
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ore-sdk-30