Is there any way to capture/intercept Intents of application during runtime without modifying Android framework? Modifying Android framework might require too much work. Please help me.
Capturing/Intercepting Android Intents during runtime
Asked Answered
To view Intents as they happen, run logcat in a shell and filter it down to just the Intents like this:
adb logcat | fgrep -i intent
(You can also add a filter for just your app's Intents, but that would exclude Intents sent to your app by the system and by other apps.)
This should show Intents such as
I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
To see system-wide Intents, try the Intent Intercept app.
To see all Intents sent to your own classes, then
- In each BroadcastReceiver, override onReceive(Context context, Intent intent).
- In each Activity, call getIntent() to get the Intent that started the activity.
- In each Service, override onStartCommand(Intent intent, int flags, int startId) to get the Intent that started the Service.
For info on all the standard Intent actions, see Intent.
Thank you for your comments. I'm trying to see all the explicit/implicit Intents of my application. In detail, I need to know which Activity sent which Intent and which Activity received it during runtime. Is it possible? –
Spectrum
@Spectrum I added instructions for viewing Intents via logcat and for capturing Intents sent to your Activities and Services as well as BroadcastReceivers. –
Cardigan
Inside instrumentation tests (tried on UI Automator) you can use IntentMonitor:
val intentMonitor = IntentMonitorRegistry.getInstance()
intentMonitor.addIntentCallback { intent ->
// your code here
}
© 2022 - 2024 — McMap. All rights reserved.