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. * dialog to the user and handles actual uninstall.
*/ */
void uninstallClonedApp(String packageName, boolean allUsers, FragmentActivity activity) { 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); Uri packageUri = Uri.parse("package:" + packageName);
Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri); Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, allUsers); uninstallIntent.putExtra(Intent.EXTRA_UNINSTALL_ALL_USERS, allUsers);
uninstallIntent.putExtra(Intent.EXTRA_USER, UserHandle.of(mCloneUserId)); 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 package com.android.settings.spa.app.appinfo
import android.app.Activity
import android.app.settings.SettingsEnums import android.app.settings.SettingsEnums
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
@@ -60,7 +59,8 @@ class AppCreateButton(packageInfoPresenter: PackageInfoPresenter) {
enabledState.value = false enabledState.value = false
val result = installCloneApp(app, cloneBackend) val result = installCloneApp(app, cloneBackend)
if (result == CloneBackend.SUCCESS) { if (result == CloneBackend.SUCCESS) {
navController.navigate(getRoute(app.packageName, cloneBackend.cloneUserId)) navController.navigate(getRoute(app.packageName, cloneBackend.cloneUserId),
/* popUpCurrent*/ true)
} else { } else {
enabledState.value = true enabledState.value = true
} }

View File

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