This is a bit tricky, but not impossible.
- Find all email clients
val resolveIntent = Intent(Intent.ACTION_SENDTO)
resolveIntent.setData(Uri.parse("mailto:default@recipient.com"))
val resolveInfoList = packageManager.queryIntentActivities(resolveIntent, PackageManager.MATCH_DEFAULT_ONLY)
- Start email client
val intents = resolveInfoList.mapNotNull { info -> packageManager.getLaunchIntentForPackage(info.activityInfo.packageName) }.toMutableList()
if(intents.isEmpty()) {
//no mail client installed. Prompt user or throw exception
} else if(intents.size == 1) {
//one mail client installed, start that
startActivity(intents.first())
} else {
//multiple mail clients installed, let user choose which one to start
val chooser = Intent(Intent.ACTION_CHOOSER)
chooser.putExtra(Intent.EXTRA_INTENT, intents.removeAt(0))
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents.toTypedArray())
chooser.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(chooser)
}