summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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) {