我想分享我的应用程序中的图像,并根据用户选择的应用程序自定义标题。
下面的代码运行良好,但无论用户选择哪个应用程序,文本都是相同的。
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_TEXT
、EXTRA_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
。安卓系统将根据其软件包名称自动为正确的应用程序选择正确的数据。