import
android.content.Intent
import
android.os.Bundle
import
android.provider.MediaStore
import
android.widget.Toast
import
androidx.activity.result.ActivityResultLauncher
import
androidx.activity.result.contract.ActivityResultContracts
import
androidx.appcompat.app.AlertDialog
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.app.ActivityCompat
import
com.example.accessdata.databinding.ActivityMainBinding
class
MainActivity : AppCompatActivity() {
private
var binding: ActivityMainBinding? =
null
val openGallery: ActivityResultLauncher<Intent> = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()) { result ->
if
(result.resultCode === RESULT_OK && result.data !=
null
) {
binding?.background?.setImageURI(result.data?.data)
}
}
private
val requestPermission: ActivityResultLauncher<Array<String>> = registerForActivityResult(
ActivityResultContracts.RequestMultiplePermissions()) { permissions ->
permissions.entries.forEach() {
val permissionName = it.key
val isGranted = it.value
if
(isGranted) {
Toast.makeText(
this
,
"Permission is granted for accessing gallery"
, Toast.LENGTH_LONG).show()
var intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
}
else
{
if
(permissionName == android.Manifest.permission.READ_EXTERNAL_STORAGE) {
Toast.makeText(
this
,
"You denied the permission"
, Toast.LENGTH_LONG).show()
}
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding?.root)
binding?.btnAccess?.setOnClickListener {
requestStoragePermission()
}
}
private
fun showRationaleDialog(title: String, message: String) {
val builder: AlertDialog.Builder = AlertDialog.Builder(
this
)
builder.setTitle(title).setMessage(message).setPositiveButton(
"Cancel"
) { dialog, _ ->
dialog.dismiss()
}
builder.create().show()
}
private
fun requestStoragePermission() {
if
(ActivityCompat.shouldShowRequestPermissionRationale(
this
, android.Manifest.permission.READ_EXTERNAL_STORAGE)) {
showRationaleDialog(
"Drawing App"
,
"Drawing app needs to access your external storage"
)
}
else
{
requestPermission.launch(arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE))
}
}
}