根据从Android Sharesheet中选择的应用程序,将特定文本共享到另一个应用程序



我想分享我的应用程序中的图像,并根据用户选择的应用程序自定义标题。

下面的代码运行良好,但无论用户选择哪个应用程序,文本都是相同的。

val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, "This is my text to send.")
putExtra(Intent.EXTRA_STREAM, uriToImage)
type = "image/png"
}
val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)

如何根据所选应用程序自定义文本?

您可以根据用户选择的应用程序自定义共享数据,而不仅仅是文本,方法是将EXTRA_RELACEMENT_EXTRAS添加到Intent.createChooser()创建的Intent中。这个额外的Intent是应用程序包名称的Bundle到您想要共享的自定义数据的Bundle,如EXTRA_TEXTEXTRA_STREAM等。

例如:

val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, "This is my text to send.") // Default text
putExtra(Intent.EXTRA_STREAM, uriToImage)
type = "image/png"
}
val shareIntent = Intent.createChooser(sendIntent, null)
shareIntent.putExtra( // Important to add the extra to the Chooser Intent, not `sendIntent`!
Intent.EXTRA_REPLACEMENT_EXTRAS, bundleOf(
"com.twitter.android" to bundleOf( // Twitter specific text
Intent.EXTRA_TEXT to "Hello Twitter!")
"another.app.com" to bundleOf( // Another app specific text
Intent.EXTRA_TEXT to "Hello another app!")
)
)
startActivity(shareIntent)

请注意,对于没有自定义文本的应用程序,我们仍然希望在sendIntent上设置EXTRA_TEXT。安卓系统将根据其软件包名称自动为正确的应用程序选择正确的数据。

相关内容

  • 没有找到相关文章

最新更新