With new behaviors for apps using targetSdk=33
(Android 13) regarding Intents, it may be necessary to dive in and figure out how to make things compatible.
In doing this myself, I needed to figure out what was in the Intent, so I could handle it appropriately.
I started with this StackOverflow post, but ended up adding more info and doing it cleanly in Kotlin.
fun Intent?.toDebugString(): String {
val intent = this ?: return ""
return StringBuilder().apply {
appendLine("--- Intent ---")
appendLine("type: ${intent.type}")
appendLine("package: ${intent.`package`}")
appendLine("scheme: ${intent.scheme}")
appendLine("component: ${intent.component}")
appendLine("flags: ${intent.flags}")
appendLine("categories: ${intent.categories}")
appendLine("selector: ${intent.selector}")
appendLine("action: ${intent.action}")
appendLine("dataString: ${intent.dataString}")
intent.extras?.keySet()?.forEach { key ->
appendLine("* extra: $key=${intent.extras!![key]}")
}
}.toString()
}
Use the extension function above with println(myIntent.toDebugString())
.
You can then filter Logcat with “System.out
” and see the results! I hope this helps someone figure out what’s inside your Intents!