Permisos de aplicaciones en Android Marshmallow en PhoneGap

En Android Marshmallow necesitamos dar acceso a Ubicación, Archivo, etc por separado en Aplicaciones. ¿Hay algún wan en la aplicación PhoneGap que puedo comprobar si los permisos están disponibles o no y pedir al usuario que proporcione los permisos.

ACTUALIZACIÓN 16/02/2016

Phonegap Build ahora es compatible con API 23 – hoooray!

O si construyes localmente, sólo Cordova / Phonegap CLI 6+ y obtendrás cordova-android @ 5 + plataforma por defecto.

RESPUESTA ORIGINAL

Actualmente, esto es ciertamente posible usando la CLI de Cordova / Phonegap, pero Phonegap Build todavía no admite API 23 (Android 6.0 / Marshmallow).

En primer lugar, es necesario utilizar v5.0.0 (o superior) de la plataforma Android, que utiliza API 23.

A partir de hoy, la versión predeterminada es 4.1.1 (que utiliza la API 22), por lo que es necesario especificar explícitamente la versión al agregar la plataforma:

cordova platform add [email protected] phonegap platform add [email protected] 

Los complementos principales están en proceso de ser actualizados para soportar la solicitud de permisos de tiempo de ejecución de Android 6 apropiados. Por lo tanto, necesitará instalar las versiones "borde de sangrado" directamente desde la rama principal de los repos de GitHub, en lugar de a través del registro de complementos de npm. Por ejemplo, utilice:

 cordova plugin add https://github.com/apache/cordova-plugin-file 

Que debería obtener la versión 4.0.1-dev.

No es la versión de lanzamiento de npm:

 cordova plugin add cordova-plugin-file 

Que le conseguirá v3.0.0

Tenga en cuenta que las versiones de las ramas principales no son versiones, por lo que pueden contener errores.

Por lo tanto, la alternativa (que he optado por) es continuar usando las versiones de lanzamiento de los complementos (que aún no admiten solicitud de permisos de tiempo de ejecución de Android), pero usa cordova-diagnostic-plugin para solicitar los permisos de ejecución de Android El complemento de núcleo correspondiente requiere antes de intentar utilizar la API de complemento de núcleo.

Por ejemplo, para usar el complemento de ubicación, continúe utilizando la versión de lanzamiento a través de npm:

 cordova plugin add cordova-plugin-geolocation 

Pero antes de solicitar una ubicación, asegúrese de que se ha concedido el permiso de tiempo de ejecución utilizando el complemento de diagnóstico:

 function requestLocation(){ navigator.geolocation.getCurrentPosition(onSuccess, onError, options); } cordova.plugins.diagnostic.getLocationAuthorizationStatus(function(status){ if(status == "GRANTED"){ requestLocation(); }else{ cordova.plugins.diagnostic.requestLocationAuthorization(function(status){ if(status == "GRANTED"){ requestLocation(); }else{ // Handle other cases } }, function(error){ console.error(error); }); } }, onError); 

Es posible pedir explícitamente al usuario que habilite un permiso específico con el siguiente plugin de Cordova: https://www.npmjs.com/package/cordova-plugin-android-permissions

Especialmente para plugins más antiguos esto puede ser muy útil.

  • ¿Cuáles son las mejores prácticas para la arquitectura de la aplicación Android basada en la ubicación?
  • Cómo obtener el nombre de satélite o el número cuando estamos recibiendo la ubicación a través de GPS en Android?
  • Android GPS Localización Velocidad no fiable
  • No se puede obtener la ubicación en Genymotion VM
  • Evitar que se detecte una ubicación incorrecta con el proveedor de la red
  • Cambio de idioma dentro de la aplicación Android
  • Obtener la ubicación de Android a través de wifi no funciona
  • Android - Cómo determinar si las coordenadas se encuentran en la carretera en Google Maps
  • Cómo calcular la distancia de diferentes marcadores en un mapa y luego recoger el menos uno
  • FusedLocationApi.getLastLocation siempre null
  • Problemas de permiso para la ubicación en android Marshmallow applicaton
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.