phone_state 4.0.1
phone_state: ^4.0.1 copied to clipboard
This plugin allows you to know quickly and easily if your Android or iOS device is receiving a call and to know the status of the call.
DESCRIPTION #
This plugin allows you to know quickly and easily if your Android or iOS device is receiving a call and to know the status of the call.
- Native Android: TelephonyManager
- Native iOS: CallKit
PAY ATTENTION #
- In the iOS simulator doesn't work
- The caller phone number is only available on Android, not iOS
- This plugin reports phone call state only. It does not answer, reject, end, or record calls, and it does not change whether other packages can capture call audio.
- Android detects system telephony call state only. Third-party VoIP calls from apps such as Telegram or WhatsApp are not supported. iOS CallKit behavior can differ by app.
- The iOS implementation uses CallKit. For apps distributed in regions where CallKit is restricted, including China App Store review contexts, confirm availability and territory rules with Apple before submission.
PhoneState.streamrequires the app process to be running with an active Flutter engine and listener. It does not send callbacks after the app is terminated.- On Android, if
PhoneState.streamdoes not emit, confirmREAD_PHONE_STATEis declared and granted at runtime. Some OEM battery or background restrictions, including MIUI settings on Xiaomi devices, can also delay or block callbacks.
HOW TO INSTALL #
Flutter
Note: This version requires Flutter >= 3.44.0 and Dart >= 3.12.2. Add
phone_stateto your app'spubspec.yaml, not to this package'spubspec.yaml. Your app/package name must be different fromphone_state.
dependencies:
flutter:
sdk: flutter
phone_state: 4.0.1
Android: Added permission on manifest
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
READ_PHONE_STATE is required. READ_CALL_LOG is optional and only needed for caller phone numbers.
Warning: Adding
READ_CALL_LOGpermission, your app will be removed from the Play Store if you don't have a valid reason to use it. Read more.
iOS: Not needed permissions on info.plist
HOW TO USE #
Get stream phone state status #
StreamBuilder<PhoneState>(
stream: PhoneState.stream,
...
Troubleshooting package conflicts #
If phone_state stops receiving updates after adding another package:
- Confirm the required Android runtime permissions are granted before listening.
READ_PHONE_STATEis required, andREAD_CALL_LOGis only needed for caller phone numbers. - Keep a single active
PhoneState.streamlistener for each app flow. Cancel the previous subscription before starting another one when screens, services, or background handlers change. - When reporting a conflict, include the other package names, platform versions, a minimal reproduction, and the relevant Flutter, Logcat, or Xcode logs.
SCREENSHOT #
Write me in the GitHub issues the new features you need and, if they are approved of course, I will implement them as soon as I can.
