Merge "AppClone: Few fixes in Cloned Apps page."
This commit is contained in:
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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),
|
||||||
) {
|
) {
|
||||||
|
Reference in New Issue
Block a user