2016-10-28 1 views
0

Ich habe viele Threads darüber gelesen, aber ich habe nicht genau gelesen, wie mein Problem lösen. Ich habe mit cordova eine mobile App erstellt und brauche den Dienst, um eine Karte anzuzeigen. In meinem Manifest füge ich die Permisionen hinzu und in Android 5 oder darunter funktioniert das einwandfrei, aber in Android 6 schlägt der Location Service fehl. Ich lese, dass in neuen Android-Versionen Google Berechtigungsmethoden ändert, und lese, dass ich dies mit einigen Plugins in Cordova simulieren kann, aber scheitert (oder vielleicht weiß ich nicht, wie das funktioniert).Cordova Android 6 Berechtigungen

Ich habe dies in meinem index.js

function onDeviceReady() { 
    navigator.geolocation.getCurrentPosition(CurrentPosition); 
}; 

Und diese Berechtigungen in meinem manifest.xml.

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 

¿Irgendeine Idee, wie ich Standortdienst in Android 6 ausführen kann?

+0

Haben Sie versucht, von der Laufzeit die Erlaubnis für Eibisch geben? versuchen Sie es mit dem folgenden Plugin 'https: // www.npmjs.com/package/cordova.plugins.diagnostic'. Dies wird Sie um Erlaubnis bitten. – Deepak

+0

Dies war meine erste Idee, um das Problem zu lösen, aber wenn ich es in Plugin-Ordner hinzufügen und fügen Sie es config.xml, wenn ich den Emulator starten nicht erkennen die cordova.plugins.diagnostic Objekt>: < –

Antwort

1

Wenn Sie cordova-plugin-geolocation verwenden, wird eine Berechtigungsanfrage für Android Marshmallow und höher initiiert.

Sie sollten dann navigator.geolocation wie normal verwenden können.

<feature name="Geolocation"> 
    <param name="android-package" value="org.apache.cordova.GeoBroker" /> 
</feature> 

In Ihrem config.xml:

Konfiguration wäre so etwas wie sein. Ich bin mir im Moment nicht sicher über den Paketnamen auf meinem Handy.

Oder einfach:

cordova plugin add cordova-plugin-geolocation

Wenn Cordova mit 5+.

+0

Eigentlich verwende ich HTML5 Geolocation und funktioniert in allen Geräten außer in Marshmallow. Ich lade dieses Paket herunter und füge es in den Plugins-Ordner ein, weiß aber nicht genau, wie es funktioniert. Ich muss etwas Code in config.xml hinzufügen. –

+0

Kommentar zu config hinzugefügt. Wie bereits erwähnt, bin ich mir über den genauen Namen des Plug-in-Pakets nicht sicher. – msbit

0

Ich lade Cordova.plugins.diagnostic herunter und benutze diesen Code in index.js, um beim Start der App zu starten, aber nicht funktionieren.

cordova.plugins.diagnostic.getLocationAuthorizationStatus(function (status) { 
      switch (status) { 
       case cordova.plugins.diagnostic.permissionStatus.NOT_REQUESTED: 
        console.log("Permission not requested"); 
        break; 
       case cordova.plugins.diagnostic.permissionStatus.DENIED: 
        console.log("Permission denied"); 
        break; 
       case cordova.plugins.diagnostic.permissionStatus.GRANTED: 
        navigator.geolocation.getCurrentPosition(CurrentPosition); 
        console.log("Permission granted always"); 
        break; 
       case cordova.plugins.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE: 
        console.log("Permission granted only when in use"); 
        break; 
      } 
     }, function (error) { 
      console.error("The following error occurred: " + error); 
     }); 
0

bearbeiten AnroidManifest.xml und ändern android:targetSdkVersion zu 22

android:targetSdkVersion="22" 
Verwandte Themen