Ir para o conteúdo

Permissions and Disclosure Guide

Permissions required by DMA SDK:

Interception mode Android Permissions Mode (Requires default Phone/Assistant role. Typically used by telecom apps) Push+IVR/SIP Mode (For non-dialer apps. No sensitive call permissions required.) Android version
Required by Google Policy Prominent Disclosure and Consent screen (User must approve before phone number is shared) 6+
Android runtime permissions READ_PHONE_STATE, CALL_PHONE* 6+
PROCESS_OUTGOING_CALLS, READ_CALL_LOG, ANSWER_PHONE_CALLS 9+
POST_NOTIFICATIONS 13+
POST_NOTIFICATIONS (if no SYSTEM_ALERT_WINDOW) 15+
Special permissions SYSTEM_ALERT_WINDOW 10+
SYSTEM_ALERT_WINDOW 15+
"Autostart" 6+ (Chinese OEMs)
Xiaomi "Other permissions" 9+ Xiaomi, "MIUI"

* CALL_PHONE enables auto-starting a call from the menu; without it, the dialer opens with the number pre-filled. On Android 6-8, it's also required to drop a call.

* SYSTEM_ALERT_WINDOW is the "Draw over other apps" overlay permission.

Note

There is a complete code example about how to request the permissions required by DMA SDK in the "Example of requesting all permissions" paragraph!


CallRedirectionService Mode: Intercept Outgoing Calls (Android 10+)

CallRedirectionService Mode Android version
Android roles CALL_REDIRECTION_ROLE 10+ (one app per device)
Android runtime permissions READ_PHONE_STATE, CALL_PHONE* 10+
POST_NOTIFICATIONS* only for Xiaomi (edge case to launch menu from BG)
Special permissions Xiaomi "Other permissions" 10+ Xiaomi, "MIUI"

* CALL_PHONE enables auto-starting a call from the menu; without it, the dialer opens with the number pre-filled.

* POST_NOTIFICATIONS is used in edge cases (e.g., Xiaomi MIUI) where background UI launch is blocked. The SDK will show a notification as a fallback trigger.

CallRedirectionService is suitable for non-telecom apps! See integration code sample in CallRedirectionService.


CallScreeningService Mode: Intercept Incoming Calls (Android 10+)

CallScreeningService Mode Android version
Android roles CALL_SCREENING_ROLE 10+ (one app per device)
Android runtime permissions READ_PHONE_STATE, CALL_PHONE* 10+
POST_NOTIFICATIONS* only for Xiaomi (edge case to launch menu from BG)
Special permissions SYSTEM_ALERT_WINDOW 10+ (Auto-granted when the role is granted)
Xiaomi "Other permissions" 10+ Xiaomi, "MIUI"

* CALL_PHONE enables auto-starting a call from the menu; without it, the dialer opens with the number pre-filled.

* POST_NOTIFICATIONS is used in edge cases (e.g., Xiaomi MIUI) where background UI launch is blocked. The SDK will show a notification as a fallback trigger.

CallScreeningService is suitable for non-telecom apps! See integration code sample in CallScreeningService.

Possible Hybrid Integration Variants

These configurations combine two or more SDK modes to increase flexibility, maintain compatibility across Android versions, and comply with Google Play policies.

1. CallRedirectionService Mode + (Push+IVR/SIP) Mode

Recommended for modern apps that want to intercept outgoing calls on Android 10+, but also support users without role permissions or fallback scenarios.

How it works:

  • Use CallRedirectionService on Android 10+ to intercept outgoing calls.
  • For users without the redirection role or on non-supported devices, use Push+IVR to trigger the menu.

Requirements:

  1. ROLE_CALL_REDIRECTION
  2. READ_PHONE_STATE
  3. CALL_PHONE
  4. POST_NOTIFICATIONS (fallback notification)
  5. SYSTEM_ALERT_WINDOW (optional for UI launch)
  6. Autostart
  7. Xiaomi "Other permissions"

2. CallScreeningService Mode + (Push+IVR/SIP) Mode

Suitable for apps that want to detect incoming calls via official Android APIs but fall back to push notifications when screening is unavailable.

How it works:

  • Use CallScreeningService for incoming call events.
  • Fallback to Push+IVR if the role is not granted or on older Android versions.

Requirements:

  1. CALL_SCREENING_ROLE
  2. READ_PHONE_STATE
  3. CALL_PHONE
  4. POST_NOTIFICATIONS (fallback notification)
  5. SYSTEM_ALERT_WINDOW (optional for UI launch)
  6. Autostart
  7. Xiaomi "Other permissions"

3. Android permissions Mode + (Push+IVR/SIP) Mode

For telecom/dialer apps that have full permission access but want to support fallback flows for devices without default role or when Google Play limits usage.

How it works:

  • Use READ_PHONE_STATE, PROCESS_OUTGOING_CALLS, ANSWER_PHONE_CALLS for call events.
  • Use Push+IVR in parallel for users who deny permissions or for simplified flows.

Requirements:

  1. READ_PHONE_STATE
  2. CALL_PHONE
  3. PROCESS_OUTGOING_CALLS
  4. READ_CALL_LOG
  5. ANSWER_PHONE_CALLS
  6. POST_NOTIFICATIONS
  7. SYSTEM_ALERT_WINDOW
  8. Autostart
  9. Xiaomi "Other permissions"

4. Full Hybrid: Android Permissions Mode + CallRedirectionService Mode + CallScreeningService Mode + (Push+IVR/SIP) Mode

Advanced: Offers max compatibility across Android versions (22-35+)

How it works:

  • Use permissions mode on older devices (API < 29)
  • Use redirection service on Android 10+
  • Use Push+IVR/SIP if role is not granted or user disables permissions

Ideal For:

  • OEMs or apps embedded across multiple Android forks
  • Global products targeting both low-end and modern devices

Info

The configurations above illustrate typical hybrid integration models; however, they are not exhaustive. Additional combinations may be implemented depending on app architecture, permission strategy, or product requirements.