Skip to content

Instantly share code, notes, and snippets.

@dzungvu
Created October 26, 2022 14:43
Show Gist options
  • Save dzungvu/e6c127a1314b3cf5a8f5a2f3e88b87df to your computer and use it in GitHub Desktop.
Save dzungvu/e6c127a1314b3cf5a8f5a2f3e88b87df to your computer and use it in GitHub Desktop.
private fun onShare() {
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "Share default content")
}
val textEmail = "Share content use for email"
val textSMS = "Share content use for sms"
val textOther = "Share content for other app"
activity?.run {
try {
val pm: PackageManager = packageManager
val emailIntent = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:"))
val emailResInfo = pm.queryIntentActivities(emailIntent, 0)
val arrayEmailPackage = arrayListOf<String>()
for (i in emailResInfo.indices) {
arrayEmailPackage.add(emailResInfo[i].activityInfo.packageName)
}
val resInfo = pm.queryIntentActivities(sendIntent, 0)
val replacementExtra: MutableList<Pair<String, Bundle>> = ArrayList()
for (i in resInfo.indices) {
val ri = resInfo[i]
val packageName = ri.activityInfo.packageName
if (arrayEmailPackage.contains(packageName)) {
replacementExtra.add(
Pair(packageName, bundleOf(Intent.EXTRA_TEXT to textEmail))
)
} else if (packageName.contains("mms") || packageName == "com.samsung.android.messaging" || packageName == "com.google.android.apps.messaging") {
replacementExtra.add(
Pair(packageName, bundleOf(Intent.EXTRA_TEXT to textSMS))
)
} else {
replacementExtra.add(
Pair(packageName, bundleOf(Intent.EXTRA_TEXT to textOther))
)
}
}
val chooser = Intent.createChooser(sendIntent, getString(R.string.share))
chooser.putExtra(
Intent.EXTRA_REPLACEMENT_EXTRAS,
bundleOf(*replacementExtra.toTypedArray())
)
context?.startActivity(chooser)
} catch (ex: Exception) {
ex.printStackTrace()
sendIntent.putExtra(Intent.EXTRA_TEXT, "Share default content")
val shareIntent = Intent.createChooser(sendIntent, getString(R.string.share))
context?.startActivity(shareIntent)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment