Phony (formerly FakeCall) is an open-source Android application to simulate incoming calls, featuring a modern Material 3 UI with dynamic Monet support.
Using Android 6? Phony needs a quick one-time setup on Android 6 (the calling account has to be enabled). See Android 6 (API 23) setup.
Ever wanted to get that Feature of old Samsung phones to simulate an incoming call with audio on the original phone app? Introducing Phony. Unlike other apps that merely mock a UI, this app integrates directly with the Android Telecom Framework to provide an indistinguishable calling experience. It has many features to make the call as real as possible.
- Original Dialer: Phony uses your real Phone app to simulate the incoming Call by creating a Phone Account in android's TelecomManager
- Customizable: The app lets you customize the name of the fake phone account in the settings to match your real service provider.
- Schedule: Set exact Timers for when the call should come in
- Audio Support: You can upload audio files that play when the call is answered
- Call History: Simulated calls are being shown in call history
- IVR Mode: assign audio files to keys and make sub-menus
- Recording: record microphone audio of a simulated call
- Automation API: trigger calls from Tasker, MacroDroid, or ADB via a broadcast intent
- Accessibility Shortcut: schedule a fake call from the system accessibility button using saved defaults
- Quick Trigger Presets: save up to 5 presets and expose them as launcher app actions + Quick Settings tiles
Phony exposes a broadcast receiver for automation apps.
Action
com.upnp.fakeCall.TRIGGER
Extras
caller_name(String, optional)caller_number(String, optional)delay(Int, optional, seconds)
If one or more extras are omitted, Phony falls back to the saved Automation & Quick Trigger Defaults from Settings.
ADB example (recommended, package-targeted, no -n needed)
adb shell am broadcast -a com.upnp.fakeCall.TRIGGER -p com.upnp.fakeCall --es caller_name "Boss" --es caller_number "+49123456789" --ei delay 30Windows cmd.exe (single line)
adb shell am broadcast -a com.upnp.fakeCall.TRIGGER -p com.upnp.fakeCall --es caller_name "Boss" --es caller_number "+49123456789" --ei delay 30Explicit component fallback
adb shell am broadcast -n com.upnp.fakeCall/.ExternalTriggerReceiver -a com.upnp.fakeCall.TRIGGER --es caller_name "Boss" --es caller_number "+49123456789" --ei delay 30For Tasker, MacroDroid, etc. set:
- Action:
com.upnp.fakeCall.TRIGGER - Package:
com.upnp.fakeCall
Enable the Phony accessibility service and assign it to the system accessibility button or shortcut. When invoked, it schedules a fake call using the saved quick-trigger defaults from Settings and shows a short confirmation toast.
You can configure these defaults inside:
Settings -> Automation & Quick Trigger Defaults
You can also save up to five quick trigger presets from the same section:
- presets appear as launcher app actions (long-press the app icon)
- presets are available as Quick Settings tiles (
Phony Preset 1...Phony Preset 5)
Phony runs on Android 6.0 or newer. On Android 5.x the system rejects the registration of the calling account, so the app cannot work there.
Experimental: Android 6 support is experimental. Some features may not work correctly, and the steps below may differ between phones and manufacturers.
On Android 6 the calling account has to be enabled once before Phony can simulate a call.
- Open Phony once (this registers the calling account).
- Tap Open calling accounts in the setup screen, or go to Phone -> Settings -> Calling accounts.
- Find Phony in the list and turn it on.
Note: some Android 6 devices don't have this switch (or the settings screen closes by itself). If that happens, use Option 2.
Step 1. On the phone, enable Developer options (go to Settings -> About phone [or Software information], then tap Build number 7 times). Go back to the main Settings menu, open the newly visible Developer options section, scroll down, and turn on USB debugging.
Step 2. Download and extract Android Platform-Tools on your computer.
Step 3. Connect the phone with a USB cable and accept the debugging prompt on the phone screen.
Step 4. Open a terminal on your computer:
- Windows: Open the extracted
platform-toolsfolder in File Explorer, click the folder path bar at the top (where it shows folder names likeThis PC > Downloads > platform-tools), clear everything from this bar, typecmd, and press Enter. - macOS / Linux: Open Terminal, type
cd(with a space at the end), drag and drop theplatform-toolsfolder into the Terminal window, and press Enter (or right-click the folder in Finder and choose New Terminal at Folder).
Step 5. Check that the phone is detected by running this command:
adb devicesOn Windows PowerShell you might need to use ./adb devices instead.
Your phone should appear in the list with the status device. If it says unauthorized or isn't listed at all, unlock the phone, unplug and reconnect the USB cable, accept the debugging prompt on the phone, and run the command again.
Step 6. Open Phony once.
Step 7. Run this command to enable the account:
adb shell telecom set-phone-account-enabled com.upnp.fakeCall/com.upnp.fakeCall.FakeCallConnectionService fake_call_provider_account 0Step 8. Check the result. Run the command that matches your system:
macOS / Linux:
adb shell dumpsys telecom | grep "com.upnp.fakeCall"Windows (Command Prompt):
adb shell dumpsys telecom | findstr "com.upnp.fakeCall"Windows (PowerShell):
adb shell dumpsys telecom | Select-String "com.upnp.fakeCall"Find the line containing com.upnp.fakeCall. If it starts with [[X], the account is enabled; [[ ] means disabled.
Example output: [[X] PhoneAccount: ComponentInfo{com.upnp.fakeCall/com.upnp.fakeCall.FakeCallConnectionService}, ...
To disable the account again:
adb shell telecom set-phone-account-disabled com.upnp.fakeCall/com.upnp.fakeCall.FakeCallConnectionService fake_call_provider_account 0Troubleshooting
is ComponentInfo{...} a valid PhoneAccount?: open Phony once so the account gets registered, and make sure the package, class and account id are exactly as in the command above.- Several devices connected: add
-s SERIALright afteradb(the serial comes fromadb devices). - Samsung devices may print
MdfppReflectionUtils ... UnsatisfiedLinkErrorwarnings. They are harmless; look for the line starting withSuccess. - The command may differ between phones and manufacturers.
Quick Settings tiles (Android 7+) and launcher app actions (Android 7.1+) are not available on Android 6.
Mobile Development:
Build System:
UI/UX:
Phony/
├── .github/ # GitHub related files (e.g., issue templates, workflows) - TODO: If applicable
├── .idea/ # IntelliJ/Android Studio project configuration files
├── app/ # Main Android application module
│ ├── build.gradle.kts # Module-level Gradle build script (Kotlin DSL)
│ ├── src/ # Source code and resources
│ │ ├── main/ # Main source set (Kotlin code, resources, manifest)
│ │ └── androidTest/ # Android UI test source set
│ └── ... # Other module files
├── build.gradle.kts # Top-level Gradle build script (Kotlin DSL)
├── gradle/ # Gradle wrapper files
├── gradlew # Gradle wrapper script (for Unix/macOS)
├── gradlew.bat # Gradle wrapper script (for Windows)
├── gradle.properties # Global Gradle properties
├── settings.gradle.kts # Gradle settings file (defines project modules)
├── .gitignore # Specifies intentionally untracked files to ignore
└── README.md # This README file
We welcome contributions to Phony!
If you want to help translating, do it Here via crowdin
This Project is licenced under GNU General Public License. Read it Here
- AI for helping me with my poor kotlin knowledge.
- NLL Apps for telling me how this project could be implemented. (Reddit)
- If you encounter any bugs or have feature requests, please open an issue on GitHub Issues.
☕️ If you want to support me, you can do it via monero:
42eQ1sZtR1USUcGRwc4hiTLNvL7q8U9XSCVVtuhRFKKREpevd4F1X3aN8X4UzkqNTy3n4BsfUooLvj1ydjpem5Ee9SRA2dZ

⭐ Star this repo if you find it helpful!
Made with ❤️(and AI 🤖)


