2015-12-06 13 views

risposta

9

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); 
+1

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

+0

@DaveAlden, grazie per la risposta –

+0

Questo è stato davvero utile, grazie. – pushplaybang

Problemi correlati