Permiso múltiple a la vez no funciona en Android

Estoy tratando de get 2 permissions a la vez, pero no puedo hacerlo.

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(context, Array<String>(2) { Manifest.permission.READ_CONTACTS; Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); } } 

Solo solicita el permiso WRITE_EXTERNAL_STORAGE y no READ_CONTACTS . En realidad, si escribo WRITE_EXTERNAL_STORAGE primero y luego READ_CONTACTS , solo solicitará contacto y no WRITE_EXTERNAL_STORAGE .

 Array(size: Int, init: (Int) -> T) 

es el constructor de la class Array que toma el número de elementos que debería contener, y una function init que asigna el índice a un elemento de matriz real.

Esto es lo que hace tu código, escrito de una manera más detallada

 val a = Array<String>(size = 2, init = { index: Int -> Manifest.permission.READ_CONTACTS; // nothing Manifest.permission.WRITE_EXTERNAL_STORAGE // returned by the lambda for each index }) 

Resultado:

[Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE]

Por lo tanto, sería mejor usar la function arrayOf en este caso, ya que no desea generar los elementos de la matriz sino especificarlos explícitamente.

 Array<String>(2) { Manifest.permission.READ_CONTACTS ; Manifest.permission.WRITE_EXTERNAL_STORAGE } 

Este inicializador siempre devuelve WRITE_EXTERNAL_STORAGE , la primera línea no hace nada. Probablemente deberías estar usando la function arrayOf para build la matriz en su lugar.

Utilice este código para get múltiples permissions en kotlin

  ActivityCompat.requestPermissions(context as Activity, arrayOf(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE), PERMISSION_CAMER) 
  • Error al convertir bytecode - DexException - Firebase Auth
  • ¿Cómo puedo declarar un argumento en Kotlin que acepte (solo) enumeraciones?
  • Procesamiento de annotations con el estudio Android Kapt
  • Kotlin: properties ignoradas @ persisten por Sugar ORM
  • Cómo arreglar "La característica no es parte del esquema para este Reino" en Kotlin Realm Extention
  • ¿Clase interna dentro de su superclass abstracta en Kotlin?
  • Cómo `continue` o` break` en una instrucción `when` dentro de un ciclo` while` usando Kotlin
  • Cómo mostrar correctamente el progreso de las tareas asíncronas utilizadas por la Sala de Google
  • No puedo gradle proyecto de construcción cuando agrego la class ChatInformation kotlin que extiende RealmObject a mi proyecto, ¿dónde está el error?
  • La expresión no puede ser un selector (ocurre después de un punto) en Kotlin
  • Kotlin - Función de fábrica para class con constructor privado