Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

220
Visualizações
Funciones auxiliares de permisos de Android

Tengo una actividad que requiere permiso de cámara.

esta actividad se puede llamar desde varios lugares configurables por el usuario en la aplicación.

El diálogo de justificación y el diálogo de permiso deben mostrarse antes de que se abra la actividad.

ocurrencia

ahora mismo estoy tratando de manejar estos diálogos en algún tipo de función de extensión.

 fun handlePermissions(context: Context, required_permissions: Array<String>, activity: FragmentActivity?, fragment: Fragment?): Boolean { var isGranted = allPermissionsGranted(context, required_permissions) if (!isGranted) { //null here is where I used to pass my listener which was the calling fragment previously that implemented an interface val dialog = DialogPermissionFragment(null, DialogPermissionFragment.PermissionType.QR) activity?.supportFragmentManager?.let { dialog.show(it, "") } //get result from dialog? how? //if accepted launch actual permission request fragment?.registerForActivityResult(ActivityResultContracts.RequestPermission()) { success -> isGranted = success }?.launch(android.Manifest.permission.CAMERA) } return isGranted }

Pero tengo problemas para recuperar los resultados del diálogo de justificación/explicación.

Mi investigación hasta ahora me llevó a quizás usar una función de orden superior, para pasar una variable de función al fragmento de diálogo que devuelve un valor booleano a la función auxiliar. Pero no estoy absolutamente seguro de si eso es lo correcto.

Pensé que usar mi propio código sería más limpio y menos costoso, ¿podría lograr esto más fácilmente al usar un marco como eazy-permissions? (Dexter sigue siendo recomendable ya que ya no está en desarrollo)

¿Es eso algo viable que estoy tratando de lograr aquí?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Un enfoque que he implementado y parece viable de usar es este:

Ayudante de PermissionsHelper de clase

 class PermissionsHelper(private val activity: Activity) { fun requestPermissionsFromDevice( arrayPermissions: Array<String>, permissionsResultInterface: PermissionsResultInterface ) { setPermissionResultInterface(permissionsResultInterface) getMyPermissionRequestActivity().launch(arrayPermissions) } fun checkPermissionsFromDevice(permission: String): Boolean { return ContextCompat.checkSelfPermission(activity, permission) == PackageManager.PERMISSION_GRANTED } }

Class PermissionsResultInterface para que la clase auxiliar pueda comunicarse con la actividad.

 interface PermissionsResultInterface { fun onPermissionFinishResult(permissions: MutableMap<String, Boolean>) }

Uso con este enfoque para eliminar todos los archivos del directorio de la aplicación:

 private fun clearFiles(firstCall: Boolean = false) { if (verifyStoragePermissions(firstCall)) { val dir = File(getExternalFilesDir(null).toString()) removeFileOrDirectory(dir) Toast.makeText( applicationContext, resources.getString(R.string.done), Toast.LENGTH_SHORT ).show() } } private fun verifyStoragePermissions(firstCall: Boolean = false): Boolean { val arrayListPermissions = arrayOf( android.Manifest.permission.READ_EXTERNAL_STORAGE, android.Manifest.permission.WRITE_EXTERNAL_STORAGE ) for (permission in arrayListPermissions) { if (!PermissionsHelper(this).checkPermissionsFromDevice(permission)) { if (firstCall) PermissionsHelper(this) .requestPermissionsFromDevice(arrayListPermissions, this) else PermissionsDialogs(this).showPermissionsErrorDialog() return false } } return true } override fun onPermissionFinishResult(permissions: MutableMap<String, Boolean>) { clearFiles() }

Con este enfoque, puede llamar al ayudante de permisos y usar la interfaz de resultados, después de cada una de las respuestas del usuario, decidir si aún necesita hacer una llamada para obtener permisos o mostrarle un cuadro de diálogo.

Si necesitas ayuda no dudes en contactarme.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda