In Android Marshmallow è necessario concedere l'accesso a posizione, file, ecc. Separatamente nelle app. Esiste un problema nell'app PhoneGap che posso verificare se le autorizzazioni sono disponibili o meno e chiedere all'utente di fornire le autorizzazioni.Autorizzazioni app su Android Marshmallow in PhoneGap
risposta
AGGIORNAMENTO 16/02/2016
PhoneGap Costruire la società supports API 23 - hoooray!
Oppure se si costruisce localmente, solo Cordova/Phonegap CLI 6+ e si otterrà la piattaforma cordova-android @ 5 + per impostazione predefinita.
RISPOSTA ORIGINALE
Attualmente, questo è certamente possibile utilizzando il Cordova/PhoneGap CLI, ma Phonegap Build non supporta ancora API 23 (Android 6.0/Marshmallow).
In primo luogo, è necessario utilizzare v5.0.0 (o superiore) della piattaforma Android, che utilizza API 23.
A partire da oggi, la versione di default è 4.1.1 (che utilizza API 22), in modo da è necessario specificare in modo esplicito la versione quando si aggiunge la piattaforma:
cordova platform add [email protected]
phonegap platform add [email protected]
I plugin core stessi sono in procinto di essere aggiornato per supportare la richiesta di adeguate autorizzazioni di 6 runtime Android. Quindi dovrai installare le versioni "bleeding edge" direttamente dal ramo master dei repository GitHub, invece che tramite il registro del plugin npm. Ad esempio, utilizzare:
cordova plugin add https://github.com/apache/cordova-plugin-file
che dovrebbe ottenere la versione 4.0.1-dev.
Non la versione NPM:
cordova plugin add cordova-plugin-file
che vi porterà v3.0.0
Nota che le versioni sul master rami non sono uscite, quindi può contenere bug.
Quindi l'alternativa (che ho optato per), è di continuare a utilizzare le versioni di rilascio dei plugin (che non supportano ancora richieste di permessi di runtime Android), ma usare cordova-diagnostic-plugin per richiedere le autorizzazioni di runtime di Android che il il plug-in core corrispondente richiede prima di tentare di utilizzare l'API core plugin.
Ad esempio, per usare il plugin posizione, continuare a utilizzare la versione via NPM:
cordova plugin add cordova-plugin-geolocation
Ma prima di richiedere una posizione, in modo che il permesso di esecuzione è stata concessa con il plugin di diagnosi:
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);
E 'possibile richiedere esplicitamente all'utente di attivare una specifica autorizzazione con i seguenti Cordova plugin: https://www.npmjs.com/package/cordova-plugin-android-permissions
Especia per i vecchi plugin questo può essere molto utile.
hai più ragione, ma invece di aggiungere il plugin da github, che come hai detto, installerà la versione -dev, dovrebbe installare l'ultima versione rilasciata usando '' 'cordova plugin aggiungi cordova-plugin-file @ 4.0.0 --save''' – jcesarmobile
@DaveAlden, grazie per la risposta –
Questo è stato davvero utile, grazie. – pushplaybang