Address API Review for setProfileOwnerCanAccessDeviceIds

Per API council's suggestion, make setProfileOwnerCanAccessDeviceIds
throw only if the API level of the calling app is R and above, and
call markProfileOwnerOnOrganizationOwnedDevice if called from apps
targeting Q and below.

This code path is extremely unlikely to ever trigger because this method
was marked as SystemApi unintentionally, and could only be called during
the provisioning flow.

Test: Manual
Bug: 150957726
Change-Id: I4215c7dce642c9e3ff00183f43867802507911ca
This commit is contained in:
Eran Messeri
2020-03-19 19:06:18 +00:00
parent 6ef8f5e1ab
commit 17429b5394

View File

@@ -11492,7 +11492,11 @@ public class DevicePolicyManager {
/**
* Deprecated. Use {@code markProfileOwnerOnOrganizationOwnedDevice} instead.
* Throws UnsupportedOperationException when called.
* When called by an app targeting SDK level {@link android.os.Build.VERSION_CODES#Q} or
* below, will behave the same as {@link #markProfileOwnerOnOrganizationOwnedDevice}.
*
* When called by an app targeting SDK level {@link android.os.Build.VERSION_CODES#R}
* or above, will throw an UnsupportedOperationException when called.
*
* @deprecated Use {@link #markProfileOwnerOnOrganizationOwnedDevice} instead.
*
@@ -11503,9 +11507,14 @@ public class DevicePolicyManager {
@RequiresPermission(value = android.Manifest.permission.GRANT_PROFILE_OWNER_DEVICE_IDS_ACCESS,
conditional = true)
public void setProfileOwnerCanAccessDeviceIds(@NonNull ComponentName who) {
throw new UnsupportedOperationException(
"This method is deprecated. use markProfileOwnerOnOrganizationOwnedDevice instead"
+ ".");
ApplicationInfo ai = mContext.getApplicationInfo();
if (ai.targetSdkVersion > Build.VERSION_CODES.Q) {
throw new UnsupportedOperationException(
"This method is deprecated. use markProfileOwnerOnOrganizationOwnedDevice"
+ " instead.");
} else {
markProfileOwnerOnOrganizationOwnedDevice(who);
}
}
/**