Skip to content
Snippets Groups Projects
Commit b8d9e77b authored by Lorenzo Colitti's avatar Lorenzo Colitti Committed by Gerrit Code Review
Browse files

Merge "New API for getting uids have specific permissions from SystemConfig"

parents 5f249209 ba70fa80
No related branches found
No related tags found
No related merge requests found
......@@ -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 {
......
......@@ -35,4 +35,9 @@ interface ISystemConfig {
* @see SystemConfigManager#getDisabledUntilUsedPreinstalledCarrierAssociatedAppEntries
*/
Map getDisabledUntilUsedPreinstalledCarrierAssociatedAppEntries();
/**
* @see SystemConfigManager#getSystemPermissionUids
*/
int[] getSystemPermissionUids(String permissionName);
}
......@@ -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();
}
}
}
......@@ -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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment