summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2025-02-25 16:31:16 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2025-02-25 16:31:16 -0800
commita216c87c9759f74d9cdfb91cc9db04a9556a6c88 (patch)
treef66dd3a367593d1c109678d6f49c3c3a4a39296e /service
parentca9a2d79e52f83f6bf23510bd58d280b695ebfd2 (diff)
parentb0514c4e229ef09328bc7aeaf09c4c2f3a3ace71 (diff)
Merge "Query for contacts in the same user as the call when deciding trusted" into main
Diffstat (limited to 'service')
-rw-r--r--service/java/com/android/ecm/EnhancedConfirmationService.java21
1 files changed, 13 insertions, 8 deletions
diff --git a/service/java/com/android/ecm/EnhancedConfirmationService.java b/service/java/com/android/ecm/EnhancedConfirmationService.java
index fc0ed20d0..1e5ab2fed 100644
--- a/service/java/com/android/ecm/EnhancedConfirmationService.java
+++ b/service/java/com/android/ecm/EnhancedConfirmationService.java
@@ -110,7 +110,6 @@ public class EnhancedConfirmationService extends SystemService {
new EnhancedConfirmationManagerLocalImpl(this));
}
- private ContentResolver mContentResolver;
private TelephonyManager mTelephonyManager;
@GuardedBy("mUserAccessibilityManagers")
@@ -128,7 +127,6 @@ public class EnhancedConfirmationService extends SystemService {
systemConfigManager.getEnhancedConfirmationTrustedInstallers());
publishBinderService(Context.ECM_ENHANCED_CONFIRMATION_SERVICE, new Stub());
- mContentResolver = getContext().getContentResolver();
mTelephonyManager = getContext().getSystemService(TelephonyManager.class);
}
@@ -177,10 +175,12 @@ public class EnhancedConfirmationService extends SystemService {
// device, either because the device lacks telephony calling, or the telephony service
// is unavailable.
}
+ UserHandle user = call.getDetails().getAccountHandle().getUserHandle();
if (number != null) {
- return hasContactWithPhoneNumber(number) ? CALL_TYPE_TRUSTED : CALL_TYPE_UNTRUSTED;
+ return hasContactWithPhoneNumber(number, user)
+ ? CALL_TYPE_TRUSTED : CALL_TYPE_UNTRUSTED;
} else {
- return hasContactWithDisplayName(call.getDetails().getCallerDisplayName())
+ return hasContactWithDisplayName(call.getDetails().getCallerDisplayName(), user)
? CALL_TYPE_TRUSTED : CALL_TYPE_UNTRUSTED;
}
}
@@ -196,7 +196,7 @@ public class EnhancedConfirmationService extends SystemService {
return handle.getSchemeSpecificPart();
}
- private boolean hasContactWithPhoneNumber(String phoneNumber) {
+ private boolean hasContactWithPhoneNumber(String phoneNumber, UserHandle user) {
if (phoneNumber == null) {
return false;
}
@@ -206,12 +206,12 @@ public class EnhancedConfirmationService extends SystemService {
PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup._ID
};
- try (Cursor res = mContentResolver.query(uri, projection, null, null)) {
+ try (Cursor res = getUserContentResolver(user).query(uri, projection, null, null)) {
return res != null && res.getCount() > 0;
}
}
- private boolean hasContactWithDisplayName(String displayName) {
+ private boolean hasContactWithDisplayName(String displayName, UserHandle user) {
if (displayName == null) {
return false;
}
@@ -219,11 +219,16 @@ public class EnhancedConfirmationService extends SystemService {
String[] projection = new String[]{PhoneLookup._ID};
String selection = StructuredName.DISPLAY_NAME + " = ?";
String[] selectionArgs = new String[]{displayName};
- try (Cursor res = mContentResolver.query(uri, projection, selection, selectionArgs, null)) {
+ try (Cursor res = getUserContentResolver(user)
+ .query(uri, projection, selection, selectionArgs, null)) {
return res != null && res.getCount() > 0;
}
}
+ private ContentResolver getUserContentResolver(UserHandle user) {
+ return getContext().createContextAsUser(user, 0).getContentResolver();
+ }
+
private boolean hasCallOfType(@CallType int callType) {
for (int ongoingCallType : mOngoingCalls.values()) {
if (ongoingCallType == callType) {