summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
index 6859c5835c80..d6759b3e2cca 100644
--- a/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
+++ b/services/companion/java/com/android/server/companion/CompanionDeviceManagerService.java
@@ -336,8 +336,10 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
@Override
public List<String> getAssociations(String callingPackage, int userId)
throws RemoteException {
- checkCallerIsSystemOr(callingPackage, userId);
- checkUsesFeature(callingPackage, getCallingUserId());
+ if (!callerCanManageCompanionDevices()) {
+ checkCallerIsSystemOr(callingPackage, userId);
+ checkUsesFeature(callingPackage, getCallingUserId());
+ }
return new ArrayList<>(CollectionUtils.map(
readAllAssociations(userId, callingPackage),
a -> a.deviceAddress));
@@ -353,6 +355,12 @@ public class CompanionDeviceManagerService extends SystemService implements Bind
removeAssociation(getCallingUserId(), callingPackage, deviceMacAddress);
}
+ private boolean callerCanManageCompanionDevices() {
+ return getContext().checkCallingOrSelfPermission(
+ android.Manifest.permission.MANAGE_COMPANION_DEVICES)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
private void checkCallerIsSystemOr(String pkg) throws RemoteException {
checkCallerIsSystemOr(pkg, getCallingUserId());
}