【Kotlin/Android】Intent.ACTION_SENDで共有機能の実装方法!他アプリへデータ渡し
この記事からわかること
- Android Studio/KotlinでIntentクラスの実装方法
- Intent.ACTION_SENDの使い方
- 他アプリへデータを渡す方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Intentクラスとは?
AndroidのIntentクラスとは異なるコンポーネント間(ActivityやServiceなど)でActivity間の移動やデータの受け渡し、アクションの実行(地図の表示、写真を撮るなど)、ブロードキャストメッセージの送信などを可能にする役割を持つメッセージングオブジェクトです。
このIntent
を使用することで他アプリへデータ(テキストや画像、動画、PDF、JSON、)を共有することが可能になります。
他アプリへデータを共有する
他アプリへデータを共有するためにはIntent
にIntent.ACTION_SEND
を指定します。渡すデータタイプをtype
に指定し、putExtra
メソッドで共有したいデータを指定します。例えばテキストを共有したい場合は以下のようになります。
val intent = Intent().apply {
action = Intent.ACTION_SEND
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "共有したいテキスト")
}
// 指定されたIntentを処理できるアクティビティが存在するかどうかを確認
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(intent)
}
createChooserを使用する
createChooser
を使用すると共有するテキストも表示されるようになります。
val intent = Intent().apply {
action = Intent.ACTION_SEND
type = "text/plain"
putExtra(Intent.EXTRA_TEXT, "共有したいテキスト")
}
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(
Intent.createChooser(
intent,
null
)
)
}
画像の場合
画像の場合はimage/拡張子
形式でtype
を指定します。
val sendIntent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_STREAM, imageUri)
type = "image/png" // 画像の種類を指定
}
if (intent.resolveActivity(requireContext().packageManager) != null) {
startActivity(
Intent.createChooser(
intent,
null
)
)
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。