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) 
  • Clases internas de Kotlin en Java visibles públicamente
  • java.lang.IncompatibleClassChangeError después de actualizar a kotlin RC1 (1.0.0-rc-1036)
  • Agregar un oyente de deslizamiento a textView en Anko
  • Ingrese los valores propios para combinarlos
  • Cómo configurar NDK con Kotlin en Android Studio 3.0
  • ¿Por qué el comstackdor no encuentra la constante android.R.id.home?
  • ¿Hay alguna manera de anular una propiedad setter en extender class en Kotlin?
  • ¿Cómo debo configurar un proyecto web usando Kotlin en el back-end y en el browser?
  • Usando @ Component.Builder con parameters de constructor
  • ¿TreeWalker no está trabajando con Kotlin / Gradle?
  • ¿Cuál es la forma más elegante de eliminar un oyente de una list de una callback?