App Permissions
CallBD requests only the permissions necessary to deliver a full-featured VoIP calling experience. Here's exactly what we ask for and why.
Your Privacy Matters
All permissions are requested at runtime â you can grant or deny each one individually. You can change permissions at any time in your phone's Settings. CallBD will work with limited features if some permissions are denied.
Microphone
RequiredRECORD_AUDIO ¡ MODIFY_AUDIO_SETTINGS ¡ FOREGROUND_SERVICE_MICROPHONE
Why: Essential for making and receiving VoIP voice calls. The microphone captures your voice during phone conversations. Audio settings allow us to manage speaker/earpiece routing and volume. The foreground service permission ensures the microphone stays active during calls even when the app is in the background.
Camera
OptionalCAMERA
Why: Used for potential future video calling features. You can deny this permission and still use all voice calling features without any limitations.
Phone & Call Management
RequiredMANAGE_OWN_CALLS ¡ READ_PHONE_STATE ¡ CALL_PHONE ¡ ANSWER_PHONE_CALLS ¡ FOREGROUND_SERVICE_PHONE_CALL
Why: These permissions enable the native incoming call screen (like a regular phone call), allow CallBD to integrate with your phone's call system, and maintain active calls in the background. READ_PHONE_STATE detects when you're on a regular call to avoid conflicts. FOREGROUND_SERVICE_PHONE_CALL keeps your VoIP call alive when the app is minimized.
Contacts
OptionalREAD_CONTACTS ¡ WRITE_CONTACTS
Why: Allows you to easily dial contacts from your phonebook instead of typing numbers manually. Also used to identify which of your contacts are CallBD users so you can make free app-to-app calls. Your contacts are never uploaded to our servers. The matching happens locally on your device.
Notifications
RequiredPOST_NOTIFICATIONS ¡ VIBRATE ¡ USE_FULL_SCREEN_INTENT
Why: Essential for receiving incoming call alerts via push notifications (Firebase Cloud Messaging). USE_FULL_SCREEN_INTENT shows the incoming call screen even when your phone is locked â just like a normal phone call. VIBRATE provides haptic feedback for incoming calls.
Network Access
RequiredACCESS_NETWORK_STATE ¡ CHANGE_NETWORK_STATE
Why: VoIP calls require an active internet connection. These permissions allow CallBD to check your network status (Wi-Fi/mobile data), optimize call quality based on your connection, and handle network changes gracefully during active calls.
Background Service
RequiredFOREGROUND_SERVICE ¡ WAKE_LOCK ¡ RECEIVE_BOOT_COMPLETED
Why: Keeps the SIP connection alive in the background so you can receive incoming calls at any time â even when the app isn't open. WAKE_LOCK prevents the device from sleeping during active calls. RECEIVE_BOOT_COMPLETED restarts the background service after your phone reboots so you never miss a call.
Storage
OptionalWRITE_EXTERNAL_STORAGE
Why: Used for saving call recordings or exported call logs on older Android versions (below Android 10). On newer Android versions, this permission is not required due to scoped storage. You can deny this permission without affecting core calling functionality.
Display Over Other Apps
RequiredSYSTEM_ALERT_WINDOW
Why: Shows the incoming call screen overlay on top of other apps when someone calls you. This provides a native phone-like experience where the call screen appears regardless of which app you're currently using.
Permission Summary
| Permission | Required |
|---|---|
| Microphone | Required |
| Camera | Optional |
| Phone/Call Management | Required |
| Contacts | Optional |
| Notifications | Required |
| Network Access | Required |
| Background Service | Required |
| Storage | Optional |
| Display Over Apps | Required |
How to Manage Permissions
Android
- 1 Open Settings
- 2 Go to Apps â CallBD
- 3 Tap Permissions
- 4 Toggle individual permissions on/off
iOS
- 1 Open Settings
- 2 Scroll down to CallBD
- 3 Toggle individual permissions on/off
- 4 Changes take effect immediately