Let ShareCompat.IntentBuilder create the chooser intent for sharing content.

+ Although the system's intent chooser normally takes care of cases when
  no app is found we still keep the safeguard here to be prepared for
  exotic devices behaving different.

Signed-off-by: Tobias Preuss <tobias.preuss@googlemail.com>
This commit is contained in:
Tobias Preuss 2021-12-31 22:28:46 +01:00
parent 70b07471cf
commit 74363ff823
2 changed files with 11 additions and 8 deletions

1
changelog.d/4745.misc Normal file
View File

@ -0,0 +1 @@
Open share UI provides by the system when sharing media or text.

View File

@ -305,26 +305,28 @@ fun shareMedia(context: Context, file: File, mediaMimeType: String?) {
return return
} }
val sendIntent = ShareCompat.IntentBuilder(context) val chooserIntent = ShareCompat.IntentBuilder(context)
.setType(mediaMimeType) .setType(mediaMimeType)
.setStream(mediaUri) .setStream(mediaUri)
.intent .setChooserTitle(R.string.share)
.createChooserIntent()
sendShareIntent(context, sendIntent) createChooser(context, chooserIntent)
} }
fun shareText(context: Context, text: String) { fun shareText(context: Context, text: String) {
val sendIntent = ShareCompat.IntentBuilder(context) val chooserIntent = ShareCompat.IntentBuilder(context)
.setType("text/plain") .setType("text/plain")
.setText(text) .setText(text)
.intent .setChooserTitle(R.string.share)
.createChooserIntent()
sendShareIntent(context, sendIntent) createChooser(context, chooserIntent)
} }
private fun sendShareIntent(context: Context, intent: Intent) { private fun createChooser(context: Context, intent: Intent) {
try { try {
context.startActivity(Intent.createChooser(intent, context.getString(R.string.share))) context.startActivity(intent)
} catch (activityNotFoundException: ActivityNotFoundException) { } catch (activityNotFoundException: ActivityNotFoundException) {
context.toast(R.string.error_no_external_application_found) context.toast(R.string.error_no_external_application_found)
} }