Loading packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppsRepository.kt +1 −2 Original line number Diff line number Diff line Loading @@ -46,8 +46,7 @@ class AppsRepository(context: Context) { .toSet() } val flags = PackageManager.ApplicationInfoFlags.of( ((if (userInfo.isAdmin) PackageManager.MATCH_ANY_USER else 0) or PackageManager.MATCH_DISABLED_COMPONENTS or (PackageManager.MATCH_DISABLED_COMPONENTS or PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS).toLong() ) val installedApplicationsAsUser = Loading packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/PackageManagers.kt +17 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.settingslib.spaprivileged.model.app import android.content.pm.ApplicationInfo import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.util.Log private const val TAG = "PackageManagers" object PackageManagers { fun getPackageInfoAsUser(packageName: String, userId: Int): PackageInfo = Loading @@ -26,4 +29,18 @@ object PackageManagers { fun getApplicationInfoAsUser(packageName: String, userId: Int): ApplicationInfo = PackageManager.getApplicationInfoAsUserCached(packageName, 0, userId) fun hasRequestPermission(app: ApplicationInfo, permission: String): Boolean { val packageInfo = try { PackageManager.getPackageInfoAsUserCached( app.packageName, PackageManager.GET_PERMISSIONS.toLong(), app.userId ) } catch (e: PackageManager.NameNotFoundException) { Log.w(TAG, "getPackageInfoAsUserCached() failed", e) return false } return packageInfo?.requestedPermissions?.let { permission in it } ?: false } } packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt +16 −9 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package com.android.settingslib.spaprivileged.template.app import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem Loading @@ -32,6 +34,7 @@ import androidx.compose.ui.res.stringResource import com.android.settingslib.spa.framework.compose.stateOf import com.android.settingslib.spa.widget.scaffold.MoreOptionsAction import com.android.settingslib.spa.widget.scaffold.SettingsScaffold import com.android.settingslib.spa.widget.ui.Spinner import com.android.settingslib.spaprivileged.R import com.android.settingslib.spaprivileged.model.app.AppListModel import com.android.settingslib.spaprivileged.model.app.AppRecord Loading @@ -53,18 +56,22 @@ fun <T : AppRecord> AppListPage( ) { paddingValues -> Spacer(Modifier.padding(paddingValues)) WorkProfilePager { userInfo -> // TODO: Add a Spinner here. Column(Modifier.fillMaxSize()) { val options = remember { listModel.getSpinnerOptions() } val selectedOption = rememberSaveable { mutableStateOf(0) } Spinner(options, selectedOption.value) { selectedOption.value = it } AppList( userInfo = userInfo, listModel = listModel, showSystem = showSystem, option = stateOf(0), option = selectedOption, searchQuery = stateOf(""), appItem = appItem, ) } } } } @Composable private fun ShowSystemAction(showSystem: Boolean, setShowSystem: (showSystem: Boolean) -> Unit) { Loading packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListSwitchItem.kt 0 → 100644 +32 −0 Original line number Diff line number Diff line package com.android.settingslib.spaprivileged.template.app import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.remember import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel import com.android.settingslib.spa.widget.preference.TwoTargetSwitchPreference import com.android.settingslib.spaprivileged.model.app.AppRecord @Composable fun <T : AppRecord> AppListSwitchItem( itemModel: AppListItemModel<T>, onClick: () -> Unit, checked: State<Boolean?>, changeable: State<Boolean>, onCheckedChange: ((newChecked: Boolean) -> Unit)?, ) { TwoTargetSwitchPreference( model = remember { object : SwitchPreferenceModel { override val title = itemModel.label override val summary = itemModel.summary override val checked = checked override val changeable = changeable override val onCheckedChange = onCheckedChange } }, icon = { AppIcon(itemModel.record.app, SettingsDimension.appIconItemSize) }, onClick = onClick, ) } Loading
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppsRepository.kt +1 −2 Original line number Diff line number Diff line Loading @@ -46,8 +46,7 @@ class AppsRepository(context: Context) { .toSet() } val flags = PackageManager.ApplicationInfoFlags.of( ((if (userInfo.isAdmin) PackageManager.MATCH_ANY_USER else 0) or PackageManager.MATCH_DISABLED_COMPONENTS or (PackageManager.MATCH_DISABLED_COMPONENTS or PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS).toLong() ) val installedApplicationsAsUser = Loading
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/PackageManagers.kt +17 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.settingslib.spaprivileged.model.app import android.content.pm.ApplicationInfo import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.util.Log private const val TAG = "PackageManagers" object PackageManagers { fun getPackageInfoAsUser(packageName: String, userId: Int): PackageInfo = Loading @@ -26,4 +29,18 @@ object PackageManagers { fun getApplicationInfoAsUser(packageName: String, userId: Int): ApplicationInfo = PackageManager.getApplicationInfoAsUserCached(packageName, 0, userId) fun hasRequestPermission(app: ApplicationInfo, permission: String): Boolean { val packageInfo = try { PackageManager.getPackageInfoAsUserCached( app.packageName, PackageManager.GET_PERMISSIONS.toLong(), app.userId ) } catch (e: PackageManager.NameNotFoundException) { Log.w(TAG, "getPackageInfoAsUserCached() failed", e) return false } return packageInfo?.requestedPermissions?.let { permission in it } ?: false } }
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListPage.kt +16 −9 Original line number Diff line number Diff line Loading @@ -16,7 +16,9 @@ package com.android.settingslib.spaprivileged.template.app import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.DropdownMenu import androidx.compose.material3.DropdownMenuItem Loading @@ -32,6 +34,7 @@ import androidx.compose.ui.res.stringResource import com.android.settingslib.spa.framework.compose.stateOf import com.android.settingslib.spa.widget.scaffold.MoreOptionsAction import com.android.settingslib.spa.widget.scaffold.SettingsScaffold import com.android.settingslib.spa.widget.ui.Spinner import com.android.settingslib.spaprivileged.R import com.android.settingslib.spaprivileged.model.app.AppListModel import com.android.settingslib.spaprivileged.model.app.AppRecord Loading @@ -53,18 +56,22 @@ fun <T : AppRecord> AppListPage( ) { paddingValues -> Spacer(Modifier.padding(paddingValues)) WorkProfilePager { userInfo -> // TODO: Add a Spinner here. Column(Modifier.fillMaxSize()) { val options = remember { listModel.getSpinnerOptions() } val selectedOption = rememberSaveable { mutableStateOf(0) } Spinner(options, selectedOption.value) { selectedOption.value = it } AppList( userInfo = userInfo, listModel = listModel, showSystem = showSystem, option = stateOf(0), option = selectedOption, searchQuery = stateOf(""), appItem = appItem, ) } } } } @Composable private fun ShowSystemAction(showSystem: Boolean, setShowSystem: (showSystem: Boolean) -> Unit) { Loading
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/template/app/AppListSwitchItem.kt 0 → 100644 +32 −0 Original line number Diff line number Diff line package com.android.settingslib.spaprivileged.template.app import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.remember import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.widget.preference.SwitchPreferenceModel import com.android.settingslib.spa.widget.preference.TwoTargetSwitchPreference import com.android.settingslib.spaprivileged.model.app.AppRecord @Composable fun <T : AppRecord> AppListSwitchItem( itemModel: AppListItemModel<T>, onClick: () -> Unit, checked: State<Boolean?>, changeable: State<Boolean>, onCheckedChange: ((newChecked: Boolean) -> Unit)?, ) { TwoTargetSwitchPreference( model = remember { object : SwitchPreferenceModel { override val title = itemModel.label override val summary = itemModel.summary override val checked = checked override val changeable = changeable override val onCheckedChange = onCheckedChange } }, icon = { AppIcon(itemModel.record.app, SettingsDimension.appIconItemSize) }, onClick = onClick, ) }