Merge "New API for getting uids have specific permissions from SystemConfig" am: b8d9e77b2a am: ee109d8f3b

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1545266

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: If61fdc1cab61c9510ac3ae0ba193c45f9b59925e
This commit is contained in:
Lorenzo Colitti
2021-02-16 10:48:52 +00:00
committed by Automerger Merge Worker
4 changed files with 44 additions and 0 deletions

View File

@@ -7539,6 +7539,7 @@ package android.os {
public class SystemConfigManager {
method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Set<java.lang.String> getDisabledUntilUsedPreinstalledCarrierApps();
method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
method @NonNull @RequiresPermission(android.Manifest.permission.GET_RUNTIME_PERMISSIONS) public int[] getSystemPermissionUids(@NonNull String);
}
public class SystemProperties {

View File

@@ -35,4 +35,9 @@ interface ISystemConfig {
* @see SystemConfigManager#getDisabledUntilUsedPreinstalledCarrierAssociatedAppEntries
*/
Map getDisabledUntilUsedPreinstalledCarrierAssociatedAppEntries();
/**
* @see SystemConfigManager#getSystemPermissionUids
*/
int[] getSystemPermissionUids(String permissionName);
}

View File

@@ -111,4 +111,22 @@ public class SystemConfigManager {
return Collections.emptyMap();
}
}
/**
* Get uids which have been granted given permission in system configuration.
*
* The uids and assigning permissions are defined on data/etc/platform.xml
*
* @param permissionName The target permission.
* @return The uids have been granted given permission in system configuration.
*/
@RequiresPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS)
@NonNull
public int[] getSystemPermissionUids(@NonNull String permissionName) {
try {
return mInterface.getSystemPermissionUids(permissionName);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
}

View File

@@ -21,6 +21,10 @@ import static java.util.stream.Collectors.toMap;
import android.Manifest;
import android.content.Context;
import android.os.ISystemConfig;
import android.util.ArraySet;
import android.util.SparseArray;
import com.android.internal.util.ArrayUtils;
import java.util.ArrayList;
import java.util.List;
@@ -64,6 +68,22 @@ public class SystemConfigService extends SystemService {
return SystemConfig.getInstance()
.getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
}
@Override
public int[] getSystemPermissionUids(String permissionName) {
mContext.enforceCallingOrSelfPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS,
"getSystemPermissionUids requires GET_RUNTIME_PERMISSIONS");
final List<Integer> uids = new ArrayList<>();
final SparseArray<ArraySet<String>> systemPermissions =
SystemConfig.getInstance().getSystemPermissions();
for (int i = 0; i < systemPermissions.size(); i++) {
final ArraySet<String> permissions = systemPermissions.valueAt(i);
if (permissions != null && permissions.contains(permissionName)) {
uids.add(systemPermissions.keyAt(i));
}
}
return ArrayUtils.convertToIntArray(uids);
}
};
public SystemConfigService(Context context) {