package com.enric.galeria // imports... class MainActivity : AppCompatActivity() { private lateinit var imageView: ImageView private lateinit var btnSelectImage: Button override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Inicializar vistas imageView = findViewById(R.id.imageView) btnSelectImage = findViewById(R.id.button) // Configurar botó btnSelectImage.setOnClickListener { checkAndRequestPermission() } } // Permís necessari per a Android 13+ (API 33+) private val requestPermissionLauncher = registerForActivityResult( ActivityResultContracts.RequestPermission() ) { isGranted: Boolean -> if (isGranted) { openGallery() } else { Toast.makeText( this, "Permís denegat. No pots seleccionar imatges.", Toast.LENGTH_SHORT ).show() } } // Obrir galeria i obtenir resultat private val galleryLauncher = registerForActivityResult( ActivityResultContracts.StartActivityForResult() ) { result -> if (result.resultCode == Activity.RESULT_OK) { val data: Intent? = result.data val selectedImageUri: Uri? = data?.data if (selectedImageUri != null) { // Mostrar imatge seleccionada imageView.setImageURI(selectedImageUri) } else { Toast.makeText( this, "No s'ha pogut carregar la imatge.", Toast.LENGTH_SHORT).show() } } } private fun checkAndRequestPermission() { // Aquesta línia ens obliga a indicar permisos al AndroidManifest.xml val permission = android.Manifest.permission.READ_MEDIA_IMAGES if (ContextCompat.checkSelfPermission( this,permission) == PackageManager.PERMISSION_GRANTED) { // Permís ja concedit openGallery() } else { // Sol·licitar permís requestPermissionLauncher.launch(permission) } } private fun openGallery() { val intent = Intent(Intent.ACTION_GET_CONTENT).apply { type = "image/*" addCategory(Intent.CATEGORY_OPENABLE) } galleryLauncher.launch(intent) } }