Merge "Fix App languages for work profile" into udc-dev am: 568ba14b9b

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/22530839

Change-Id: I2502ce3c6d41cafc1f5d1012f4ab315c3e1f209a
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2023-04-12 11:04:46 +00:00
committed by Automerger Merge Worker

View File

@@ -33,8 +33,10 @@ import com.android.settings.applications.AppLocaleUtil
import com.android.settings.applications.appinfo.AppLocaleDetails import com.android.settings.applications.appinfo.AppLocaleDetails
import com.android.settings.localepicker.AppLocalePickerActivity import com.android.settings.localepicker.AppLocalePickerActivity
import com.android.settingslib.spa.framework.util.filterItem import com.android.settingslib.spa.framework.util.filterItem
import com.android.settingslib.spaprivileged.framework.common.asUser
import com.android.settingslib.spaprivileged.model.app.AppListModel import com.android.settingslib.spaprivileged.model.app.AppListModel
import com.android.settingslib.spaprivileged.model.app.AppRecord import com.android.settingslib.spaprivileged.model.app.AppRecord
import com.android.settingslib.spaprivileged.model.app.userHandle
import com.android.settingslib.spaprivileged.template.app.AppListItem import com.android.settingslib.spaprivileged.template.app.AppListItem
import com.android.settingslib.spaprivileged.template.app.AppListItemModel import com.android.settingslib.spaprivileged.template.app.AppListItemModel
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -54,17 +56,18 @@ class AppLanguagesListModel(private val context: Context) : AppListModel<AppLang
override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) = override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
userIdFlow.map { userId -> userIdFlow.map { userId ->
packageManager.queryIntentActivitiesAsUser( userId to packageManager.queryIntentActivitiesAsUser(
AppLocaleUtil.LAUNCHER_ENTRY_INTENT, AppLocaleUtil.LAUNCHER_ENTRY_INTENT,
PackageManager.ResolveInfoFlags.of(PackageManager.GET_META_DATA.toLong()), PackageManager.ResolveInfoFlags.of(PackageManager.GET_META_DATA.toLong()),
userId, userId,
) )
}.combine(appListFlow) { resolveInfos, appList -> }.combine(appListFlow) { (userId, resolveInfos), appList ->
val userContext = context.asUser(UserHandle.of(userId))
appList.map { app -> appList.map { app ->
AppLanguagesRecord( AppLanguagesRecord(
app = app, app = app,
isAppLocaleSupported = AppLocaleUtil.canDisplayLocaleUi( isAppLocaleSupported = AppLocaleUtil.canDisplayLocaleUi(
context, app, resolveInfos userContext, app, resolveInfos
), ),
) )
} }
@@ -86,9 +89,7 @@ class AppLanguagesListModel(private val context: Context) : AppListModel<AppLang
}.collectAsStateWithLifecycle(initialValue = stringResource(R.string.summary_placeholder)) }.collectAsStateWithLifecycle(initialValue = stringResource(R.string.summary_placeholder))
private fun getSummary(app: ApplicationInfo): String = private fun getSummary(app: ApplicationInfo): String =
AppLocaleDetails.getAppDefaultLocale(context, app.packageName)?.let {
AppLocaleDetails.getSummary(context, app).toString() AppLocaleDetails.getSummary(context, app).toString()
} ?: context.getString(R.string.preference_of_system_locale_summary)
@Composable @Composable
override fun AppListItemModel<AppLanguagesRecord>.AppItem() { override fun AppListItemModel<AppLanguagesRecord>.AppItem() {
@@ -96,8 +97,7 @@ class AppLanguagesListModel(private val context: Context) : AppListModel<AppLang
val intent = Intent(context, AppLocalePickerActivity::class.java).apply { val intent = Intent(context, AppLocalePickerActivity::class.java).apply {
data = Uri.parse("package:${record.app.packageName}") data = Uri.parse("package:${record.app.packageName}")
} }
val userHandle : UserHandle = UserHandle.getUserHandleForUid(record.app.uid) context.startActivityAsUser(intent, record.app.userHandle)
context.startActivityAsUser(intent, userHandle)
} }
} }
} }