Skip to main content
shao1555
New Member
August 21, 2026

Phone by Google does not resolve work profile contact names for incoming calls / call log, while cross-profile PhoneLookup at framework level works correctly

  • August 21, 2026
  • 0 replies
  • 9 views

On BYOD devices with an Android Enterprise work profile (personally-owned work profile, managed by Microsoft Intune), the Google Dialer running in the personal profile does not resolve caller names from work profile contacts on the incoming call screen or in the call log. The number is shown instead of the contact name.

Framework-level cross-profile lookup is verified to be working: querying PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI directly via adb returns the correct work contact. Cross-profile contact search from the personal profile also works (work contacts appear under the "Work profile contacts" section in the Dialer/Contacts search UI). Only the number-based caller ID resolution path (incoming call UI and call log) fails.

Environment

  • Devices reproduced on:
    • Google Pixel 9a, Android 17, build CP2A.260805.005
    • Xiaomi 14T Pro (Google Dialer as default dialer), Android 16 BP2A.250605.031.A3, HyperOS 3.0.3.0.WNNJPXM
  • Phone by Google version: 234.0.963599666 (latest from Play Store at time of testing)
  • Work profile: personally-owned (BYOD), provisioned by Microsoft Intune (Company Portal 5.0.7046.0)
  • Cross-profile caller ID / contacts search: NOT blocked by policy (verified, see Evidence 1)
  • Work contact used for testing: created manually in the work profile Contacts app (local raw contact, not a remote directory entry), with E.164-normalizable number

Steps to reproduce

  1. Set up a personally-owned work profile via Microsoft Intune. Do NOT block cross-profile contacts search or caller ID (Intune device restriction toggles left as "not blocked").
  2. In the work profile Contacts app, manually create a contact with a phone number (e.g. +81 80-XXXX-XXXX).
  3. From the personal profile Dialer/Contacts search, search for the contact name → it IS found under "Work profile contacts" (cross-profile search path OK).
  4. Receive an incoming call from that number on the device (default dialer = Phone by Google in the personal profile).
  5. Observe the incoming call screen and, afterwards, the call log entry.

Expected result

The incoming call screen and call log show the work contact's name (with work badge), as documented in https://developer.android.com/work/contacts and https://support.google.com/work/android/answer/6275589

Actual result

Only the raw phone number is shown on the incoming call screen and in the call log. The same dialer app launched inside the work profile resolves the same contact correctly (in-profile lookup OK).

Evidence 1 — device policy state (no blocking policy)

adb shell dumpsys device_policy shows the caller-id / contacts access policies are unset (defaults = allowed):

managedProfileCallerIdPolicy:
managedProfileContactsPolicy:

No legacy crossProfileCallerIdDisabled=true / crossProfileContactsSearchDisabled=true entries present.

Evidence 2 — framework cross-profile PhoneLookup works

Querying the enterprise phone-lookup URI directly from the personal profile (adb shell, user 0):

$ adb shell content query --uri "content://com.android.contacts/phone_lookup_enterprise/+81XXXXXXXXXX"
Row: 0 ... contact_id=1000000223, display_name=<REDACTED>,
number=+81 80-XXXX-XXXX, normalized_number=+81XXXXXXXXXX,
photo_uri=content://com.android.contacts/contacts_corp/223/display_photo,
in_default_directory=1, ...

The row is returned correctly with the enterprise contact ID offset (contact_id=1000000xxx) and contacts_corp photo URIs, proving ContactsProvider / DevicePolicy layers function as designed. The failure is therefore isolated to the Dialer's incoming-call / call-log name resolution path.

Troubleshooting already performed (no effect)

  • Toggled off "Caller ID & spam" in Phone by Google settings
  • Cleared storage/cache of the Phone app, rebooted
  • Verified Phone by Google is up to date (234.0.963599666)
  • Reproduced on two different OEMs (Pixel and Xiaomi), ruling out OEM customization
  • Verified the test contact is a local raw contact in the work profile (not a directory/remote entry), created by hand
  • Verified number format match (tested with the exact format shown by the incoming call and E.164)

Impact

Enterprise BYOD users cannot identify business callers, despite admins explicitly allowing cross-profile caller ID. This affects managed deployments at scale and cannot be worked around by policy, since the framework-side configuration is already correct.