Merge "New API for getting uids have specific permissions from SystemConfig"
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user