- 文字分享
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, "This is my text to send.")
type = "text/plain"
}
val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)
- 图片分享
val shareIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
// Example: content://com.google.android.apps.photos.contentprovider/...
putExtra(Intent.EXTRA_STREAM, uriToImage)
type = "image/jpeg"
}
startActivity(Intent.createChooser(shareIntent, null))
- 多图分享
val imageUris: ArrayList<Uri> = arrayListOf(
// Add your image URIs here
imageUri1,
imageUri2
)
val shareIntent = Intent().apply {
action = Intent.ACTION_SEND_MULTIPLE
putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris)
type = "image/*"
}
startActivity(Intent.createChooser(shareIntent, null))
- 富文本分享
val share = Intent.createChooser(Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, "https://developer.android.com/training/sharing/")
// (Optional) Here you're setting the title of the content
putExtra(Intent.EXTRA_TITLE, "Introducing content previews")
// (Optional) Here you're passing a content URI to an image to be displayed
data = contentUri
flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
}, null)
startActivity(share)
- Android 14及以上版本,自定义分享
val sendIntent = Intent(Intent.ACTION_SEND)
.setType("text/plain")
.putExtra(Intent.EXTRA_TEXT, text)
val shareIntent = Intent.createChooser(sendIntent, null)
val customActions = arrayOf(
ChooserAction.Builder(
Icon.createWithResource(context, R.drawable.ic_custom_action),
"Custom",
PendingIntent.getBroadcast(
context,
1,
Intent(Intent.ACTION_VIEW),
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_CANCEL_CURRENT
)
).build()
)
shareIntent.putExtra(Intent.EXTRA_CHOOSER_CUSTOM_ACTIONS, customActions)
context.startActivity(shareIntent)
- 自定义分享目标
val share = Intent.createChooser(myShareIntent, null).apply {
putExtra(Intent.EXTRA_CHOOSER_TARGETS, myChooserTargetArray)
putExtra(Intent.EXTRA_INITIAL_INTENTS, myInitialIntentArray)
}
val share = Intent.createChooser(Intent(), null).apply {
// Only use for components you have control over
val excludedComponentNames = arrayOf(ComponentName("com.example.android", "ExampleClass"))
putExtra(Intent.EXTRA_EXCLUDE_COMPONENTS, excludedComponentNames)
}