Merge "AppClone: Few fixes in Cloned Apps page."

This commit is contained in:
Ankita Vyas
2023-01-20 04:39:19 +00:00
committed by Android (Google) Code Review
3 changed files with 11 additions and 7 deletions

View File

@@ -75,12 +75,13 @@ public class CloneBackend {
* dialog to the user and handles actual uninstall.
*/
void uninstallClonedApp(String packageName, boolean allUsers, FragmentActivity activity) {
// Create new intent to launch Uninstaller activity
// Create new intent to launch Uninstaller activity.
Uri packageUri = Uri.parse("package:" + packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, allUsers);
uninstallIntent.putExtra(Intent.EXTRA_USER, UserHandle.of(mCloneUserId));
activity.startActivityForResult(uninstallIntent, 0);
// Trigger uninstall as clone user.
activity.startActivityAsUser(uninstallIntent, UserHandle.of(mCloneUserId));
}
/**

View File

@@ -16,7 +16,6 @@
package com.android.settings.spa.app.appinfo
import android.app.Activity
import android.app.settings.SettingsEnums
import android.content.pm.ApplicationInfo
import androidx.compose.material.icons.Icons
@@ -60,7 +59,8 @@ class AppCreateButton(packageInfoPresenter: PackageInfoPresenter) {
enabledState.value = false
val result = installCloneApp(app, cloneBackend)
if (result == CloneBackend.SUCCESS) {
navController.navigate(getRoute(app.packageName, cloneBackend.cloneUserId))
navController.navigate(getRoute(app.packageName, cloneBackend.cloneUserId),
/* popUpCurrent*/ true)
} else {
enabledState.value = true
}

View File

@@ -16,19 +16,20 @@
package com.android.settings.spa.app.appinfo
import android.app.settings.SettingsEnums
import android.content.pm.ApplicationInfo
import android.os.Bundle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.compose.ExperimentalLifecycleComposeApi
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavType
import androidx.navigation.navArgument
import com.android.settings.R
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.LifecycleEffect
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
import com.android.settingslib.spaprivileged.model.app.toRoute
import com.android.settingslib.spaprivileged.template.app.AppInfoProvider
@@ -68,9 +69,11 @@ object CloneAppInfoSettingsProvider : SettingsPageProvider {
fun getRoute(packageName: String, userId: Int): String = "$name/$packageName/$userId"
}
@OptIn(ExperimentalLifecycleComposeApi::class)
@Composable
private fun CloneAppInfoSettings(packageInfoPresenter: PackageInfoPresenter) {
val packageInfo = packageInfoPresenter.flow.collectAsState().value ?: return
LifecycleEffect(onStart = { packageInfoPresenter.reloadPackageInfo() })
val packageInfo = packageInfoPresenter.flow.collectAsStateWithLifecycle().value ?: return
RegularScaffold(
title = stringResource(R.string.application_info_label),
) {