今回はAndroid13にて追加予定となっている写真選択ツールを使ってみました。
リファレンス
実装方法
MainActivity.kt
binding.button.setOnClickListener {
val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {
type = "image/*"
}
startForResult.launch(intent)
}
private val startForResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult? ->
if (result?.resultCode == Activity.RESULT_OK) {
result.data?.data?.also { uri: Uri ->
val inputStream = contentResolver?.openInputStream(uri)
val image = BitmapFactory.decodeStream(inputStream)
binding.imageView.setImageBitmap(image)
}
}
}
画像を1つ選択するパターンです。
このようにアプリの画面の上に写真選択する画面が出てきました。
複数選択する場合はIntenteに追加こちらを追加します。
intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxNumPhotosAndVideos)
maxNumPhotosAndVideosは最大の選択する枚数です。
簡単に実装できました。
こちらはパーミッションの許可を求めなくて良いので、良さそうですね。
注意点として、Android 11(API レベル 30)以上(Android Go デバイスを除く)をターゲットとするアプリのサポートが追加されます。との事なので、API レベル 30以下も対象としてあるアプリが多いと思うので、全てこれに変更してOKというわけには行かなそうですね。