Use getStorageSize from SpaPrivilegedLib
Bug: 236346018 Test: Manual with "All App" App List Change-Id: If05f334eea365f23e8fc7d7452aed4603c9cdc30
This commit is contained in:
@@ -16,13 +16,10 @@
|
||||
|
||||
package com.android.settings.spa.app
|
||||
|
||||
import android.app.usage.StorageStatsManager
|
||||
import android.content.Context
|
||||
import android.content.pm.ApplicationInfo
|
||||
import android.os.Bundle
|
||||
import android.text.format.Formatter
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.State
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import com.android.settings.R
|
||||
import com.android.settings.spa.app.appsettings.AppSettingsProvider
|
||||
@@ -30,16 +27,14 @@ import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
|
||||
import com.android.settingslib.spa.framework.common.SettingsPage
|
||||
import com.android.settingslib.spa.framework.common.SettingsPageProvider
|
||||
import com.android.settingslib.spa.framework.compose.navigator
|
||||
import com.android.settingslib.spa.framework.compose.rememberContext
|
||||
import com.android.settingslib.spa.framework.compose.toState
|
||||
import com.android.settingslib.spa.framework.util.asyncMapItem
|
||||
import com.android.settingslib.spa.widget.preference.Preference
|
||||
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
||||
import com.android.settingslib.spaprivileged.model.app.AppListModel
|
||||
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.AppListPage
|
||||
import com.android.settingslib.spaprivileged.template.app.getStorageSize
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
object AllAppListPageProvider : SettingsPageProvider {
|
||||
@@ -65,7 +60,7 @@ object AllAppListPageProvider : SettingsPageProvider {
|
||||
private fun AllAppListPage() {
|
||||
AppListPage(
|
||||
title = stringResource(R.string.all_apps),
|
||||
listModel = rememberContext(::AllAppListModel),
|
||||
listModel = remember { AllAppListModel() },
|
||||
showInstantApps = true,
|
||||
) { itemModel ->
|
||||
AppListItem(
|
||||
@@ -77,11 +72,9 @@ private fun AllAppListPage() {
|
||||
|
||||
data class AppRecordWithSize(
|
||||
override val app: ApplicationInfo,
|
||||
var sizeBytes: Long? = null,
|
||||
) : AppRecord
|
||||
|
||||
private class AllAppListModel(private val context: Context) : AppListModel<AppRecordWithSize> {
|
||||
private val storageStatsManager = context.getSystemService(StorageStatsManager::class.java)!!
|
||||
private class AllAppListModel : AppListModel<AppRecordWithSize> {
|
||||
|
||||
override fun transform(userIdFlow: Flow<Int>, appListFlow: Flow<List<ApplicationInfo>>) =
|
||||
appListFlow.asyncMapItem { app ->
|
||||
@@ -95,16 +88,5 @@ private class AllAppListModel(private val context: Context) : AppListModel<AppRe
|
||||
) = recordListFlow
|
||||
|
||||
@Composable
|
||||
override fun getSummary(option: Int, record: AppRecordWithSize): State<String> =
|
||||
Formatter.formatFileSize(context, record.calculateSizeBytes()).toState()
|
||||
|
||||
private fun AppRecordWithSize.calculateSizeBytes(): Long {
|
||||
sizeBytes?.let { return it }
|
||||
val stats = storageStatsManager.queryStatsForPackage(
|
||||
app.storageUuid, app.packageName, app.userHandle
|
||||
)
|
||||
return (stats.codeBytes + stats.dataBytes + stats.cacheBytes).also {
|
||||
sizeBytes = it
|
||||
}
|
||||
}
|
||||
override fun getSummary(option: Int, record: AppRecordWithSize) = record.app.getStorageSize()
|
||||
}
|
||||
|
Reference in New Issue
Block a user