Expose setInstallFlagAllowTest testAPI

Exposed a testAPIs to set INSTALL_ALLOW_TEST install flag,
and allowed it to holders of INSTALL_TEST_ONLY_PACKAGE
permission.

Bug: 183716601
Test: N/A
Change-Id: Ie045f43c5224ed75e0ba8db91a3b77aa4d66a5d6
This commit is contained in:
kholoud mohamed
2021-03-29 17:40:28 +01:00
committed by Kholoud Mohamed
parent 692496d964
commit dbaaacd5ad
3 changed files with 15 additions and 1 deletions

View File

@@ -17,6 +17,7 @@ package android {
field public static final String CONTROL_DEVICE_STATE = "android.permission.CONTROL_DEVICE_STATE";
field public static final String FORCE_DEVICE_POLICY_MANAGER_LOGS = "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS";
field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
field public static final String INSTALL_TEST_ONLY_PACKAGE = "android.permission.INSTALL_TEST_ONLY_PACKAGE";
field public static final String KEEP_UNINSTALLED_PACKAGES = "android.permission.KEEP_UNINSTALLED_PACKAGES";
field @Deprecated public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
field public static final String MANAGE_ACTIVITY_TASKS = "android.permission.MANAGE_ACTIVITY_TASKS";
@@ -811,6 +812,7 @@ package android.content.pm {
}
public static class PackageInstaller.SessionParams implements android.os.Parcelable {
method public void setInstallFlagAllowTest();
method public void setInstallerPackageName(@Nullable String);
}

View File

@@ -1986,6 +1986,14 @@ public class PackageInstaller {
}
}
/**
* @hide
*/
@TestApi
public void setInstallFlagAllowTest() {
installFlags |= PackageManager.INSTALL_ALLOW_TEST;
}
/**
* Set the installer package for the app.
*

View File

@@ -584,12 +584,16 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
params.installFlags &= ~PackageManager.INSTALL_FROM_ADB;
params.installFlags &= ~PackageManager.INSTALL_ALL_USERS;
params.installFlags &= ~PackageManager.INSTALL_ALLOW_TEST;
params.installFlags |= PackageManager.INSTALL_REPLACE_EXISTING;
if ((params.installFlags & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0
&& !mPm.isCallerVerifier(callingUid)) {
params.installFlags &= ~PackageManager.INSTALL_VIRTUAL_PRELOAD;
}
if (mContext.checkCallingOrSelfPermission(
Manifest.permission.INSTALL_TEST_ONLY_PACKAGE)
!= PackageManager.PERMISSION_GRANTED) {
params.installFlags &= ~PackageManager.INSTALL_ALLOW_TEST;
}
}
String originatingPackageName = null;