根据从 Android Sharesheet 中选择的应用,将特定文本分享到另一个应用
Share specific text to another app based on chosen app from 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_REPLACEMENT_EXTRAS 添加到 Intent.createChooser()
创建的 Intent
中。
这个Intent
extra,是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
。 Android 将根据包名自动为正确的应用选择正确的数据。
我想分享我应用中的图片并根据用户选择的应用自定义标题。
下面的代码运行良好,但无论用户选择哪个应用程序,文本始终相同。
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_REPLACEMENT_EXTRAS 添加到 Intent.createChooser()
创建的 Intent
中。
这个Intent
extra,是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
。 Android 将根据包名自动为正确的应用选择正确的数据。