Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f4b629c authored by Winson's avatar Winson Committed by Winson Chiu
Browse files

Add specific uninstall dialog string for work profile

Prompts the user with

"Do you want to uninstall this app from the work profile?"

when uninstalling an app where PackageInstaller was started from
the parent profile specifically targeting the child managed
profile.

Bug: 193792780

Test: manual, test app which sends DELETE action

Change-Id: I4e4295badfcd022452715e4657ce78eff027c1f9
parent 405a9f1c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -112,6 +112,8 @@
    <!--  [CHAR LIMIT=none] -->
    <string name="uninstall_application_text_user">Do you want to uninstall this app for the user <xliff:g id="username">%1$s</xliff:g>?</string>
    <!--  [CHAR LIMIT=none] -->
    <string name="uninstall_application_text_current_user_work_profile">Do you want to uninstall this app from your work profile?</string>
    <!--  [CHAR LIMIT=none] -->
    <string name="uninstall_update_text">Replace this app with the factory version? All data will be removed.</string>
    <!--  [CHAR LIMIT=none] -->
    <string name="uninstall_update_text_multiuser">Replace this app with the factory version? All data will be removed. This affects all users of this device, including those with work profiles.</string>
+12 −3
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Log;
@@ -125,6 +126,7 @@ public class UninstallAlertDialogFragment extends DialogFragment implements

        final boolean isUpdate =
                ((dialogInfo.appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
        final UserHandle myUserHandle = Process.myUserHandle();
        UserManager userManager = UserManager.get(getActivity());
        if (isUpdate) {
            if (isSingleUser(userManager)) {
@@ -135,10 +137,17 @@ public class UninstallAlertDialogFragment extends DialogFragment implements
        } else {
            if (dialogInfo.allUsers && !isSingleUser(userManager)) {
                messageBuilder.append(getString(R.string.uninstall_application_text_all_users));
            } else if (!dialogInfo.user.equals(android.os.Process.myUserHandle())) {
            } else if (!dialogInfo.user.equals(myUserHandle)) {
                UserInfo userInfo = userManager.getUserInfo(dialogInfo.user.getIdentifier());
                if (userInfo.isManagedProfile()
                        && userInfo.profileGroupId == myUserHandle.getIdentifier()) {
                    messageBuilder.append(
                            getString(R.string.uninstall_application_text_current_user_work_profile,
                                    userInfo.name));
                } else {
                    messageBuilder.append(
                            getString(R.string.uninstall_application_text_user, userInfo.name));
                }
            } else {
                messageBuilder.append(getString(R.string.uninstall_application_text));
            }
+14 −3
Original line number Diff line number Diff line
@@ -21,7 +21,10 @@ import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.UserInfo;
import android.os.Bundle;
import android.os.Process;
import android.os.UserHandle;
import android.os.UserManager;

import androidx.leanback.app.GuidedStepFragment;
import androidx.leanback.widget.GuidanceStylist;
import androidx.leanback.widget.GuidedAction;
@@ -59,6 +62,7 @@ public class UninstallAlertFragment extends GuidedStepFragment {

        final boolean isUpdate =
                ((dialogInfo.appInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0);
        final UserHandle myUserHandle = Process.myUserHandle();
        UserManager userManager = UserManager.get(getActivity());
        if (isUpdate) {
            if (isSingleUser(userManager)) {
@@ -69,10 +73,17 @@ public class UninstallAlertFragment extends GuidedStepFragment {
        } else {
            if (dialogInfo.allUsers && !isSingleUser(userManager)) {
                messageBuilder.append(getString(R.string.uninstall_application_text_all_users));
            } else if (!dialogInfo.user.equals(android.os.Process.myUserHandle())) {
            } else if (!dialogInfo.user.equals(myUserHandle)) {
                UserInfo userInfo = userManager.getUserInfo(dialogInfo.user.getIdentifier());
                if (userInfo.isManagedProfile()
                        && userInfo.profileGroupId == myUserHandle.getIdentifier()) {
                    messageBuilder.append(
                            getString(R.string.uninstall_application_text_current_user_work_profile,
                                    userInfo.name));
                } else {
                    messageBuilder.append(
                            getString(R.string.uninstall_application_text_user, userInfo.name));
                }
            } else {
                messageBuilder.append(getString(R.string.uninstall_application_text));
            }