Когда я нажимаю на свой адаптер, я хочу, чтобы он отображал диалоговое окно, содержащее 3 элемента: take photo
, select image
или cancel
.Если они выберут «сделать фотографию», появится диалоговое окно с разрешением.Когда пользователь нажимает кнопку allow
, он сразу же начинает выполнять действия с камерой.
mImageListAdapter.mAddImageClickListener = object : ImageListAdapter.AddImageClickListener {
override fun addImageClicked() {
val options = arrayOf<CharSequence>("Take Photo", "Choose From Gallery", "Cancel")
val builder = android.support.v7.app.AlertDialog.Builder(context!!)
builder.setTitle("Select Option")
builder.setItems(options) { dialog, item ->
if (options[item] == "Take Photo") {
if (requestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, CAMERA_CAPTURE)
dialog.dismiss()
}
} else if (options[item] == "Choose From Gallery") {
dialog.dismiss()
val pickPhoto = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
startActivityForResult(pickPhoto, REQUEST_IMAGE_GALLERY)
} else if (options[item] == "Cancel") {
dialog.dismiss()
}
}
builder.show()
}
}
Теперь моя проблема заключается в том, что при нажатии на адаптер появляется диалоговое окно.Когда я выбираю take photo
, появляется диалоговое окно с разрешениями.Но когда я нажимаю кнопку allow
в диалоговом окне разрешений, она не выполняет действия камеры, а только закрывает диалоговое окно разрешений.
Где разместить функцию requestPermisson
?
RequestPermission
fun requestPermission(permission: String): Boolean {
val isGranted = ContextCompat.checkSelfPermission(context!!, permission) == PackageManager.PERMISSION_GRANTED
if (!isGranted) {
ActivityCompat.requestPermissions(
activity,
arrayOf(permission),
READ_WRITE_STORAGE
)
}
return isGranted
}