Pass correct user id to PackageInstaller for uninstall

When PIA issues an uninstall to PackageInstaller from any other user or
profile, the userId passed is always user{0} since a PackageInstaller
instance is created from user{0}.
Now PIA creates a PackageInstaller instance from the user where the
uninstall should happen

Bug: 264689472
Test: Manual. Setup work profile using TestDPC, attempt to uninstall an
      app.
Change-Id: I7781a05b66fe8d6d717081b126484a7581fad965
This commit is contained in:
Sumedh Sen
2023-02-20 18:00:43 -08:00
parent cee6d5a8c8
commit f1320ee714
2 changed files with 6 additions and 6 deletions

View File

@@ -83,7 +83,7 @@ public class UninstallUninstalling extends Activity implements
}
UserManager customUserManager = UninstallUninstalling.this
.createContextAsUser(UserHandle.of(user.getIdentifier()), 0)
.createContextAsUser(user, 0)
.getSystemService(UserManager.class);
if (customUserManager.isUserOfType(UserManager.USER_TYPE_PROFILE_CLONE)) {
isCloneUser = true;
@@ -117,7 +117,7 @@ public class UninstallUninstalling extends Activity implements
int flags = allUsers ? PackageManager.DELETE_ALL_USERS : 0;
flags |= keepData ? PackageManager.DELETE_KEEP_DATA : 0;
getPackageManager().getPackageInstaller().uninstall(
createContextAsUser(user, 0).getPackageManager().getPackageInstaller().uninstall(
new VersionedPackage(mAppInfo.packageName,
PackageManager.VERSION_CODE_HIGHEST),
flags, pendingIntent.getIntentSender());

View File

@@ -367,10 +367,10 @@ public class UninstallerActivity extends Activity {
int flags = mDialogInfo.allUsers ? PackageManager.DELETE_ALL_USERS : 0;
flags |= keepData ? PackageManager.DELETE_KEEP_DATA : 0;
getPackageManager().getPackageInstaller().uninstall(
new VersionedPackage(mDialogInfo.appInfo.packageName,
PackageManager.VERSION_CODE_HIGHEST),
flags, pendingIntent.getIntentSender());
createContextAsUser(mDialogInfo.user, 0).getPackageManager().getPackageInstaller()
.uninstall(new VersionedPackage(mDialogInfo.appInfo.packageName,
PackageManager.VERSION_CODE_HIGHEST), flags,
pendingIntent.getIntentSender());
} catch (Exception e) {
notificationManager.cancel(uninstallId);