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.
- Android 4.4.2 LocationResult.hasResult (intención) da Unmarshalling código de tipo desconocido
- Cómo falsificar la ubicación para hacer pruebas con LocationClient y Geofences en Android?
- ¿Existe un servicio o una aplicación de Android que sea similar al servicio de ubicación de cambios significativos de IOS?
- Cómo obtener la ubicación GPS de Android
- requestLocationUpdates () en un hilo independiente
- IllegalArgumentException: el proveedor no exisit: null en Maps V1
- ¿Cómo comprobar si el servicio de localización wifi está en ...?
- Android getLatitude () devuelve latitud geodésica o geocéntrica?
- Creación de un objeto Ubicación en Android con valores de latitud y longitud
- Actualizaciones de ubicación que no funcionan en interiores como lo reclaman las API del proveedor de ubicaciones de Fusion
- ¿Cómo puedo obtener el nombre de la ciudad de mi posición actual?
- Convertir la ubicación en GeoPoint
- LocationClient no se puede resolver con un tipo
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ál es la forma correcta de detener un servicio que se está ejecutando como primer plano
- Cómo deshabilitar evento de clic de marcador?