Phonegap/Cordova la géolocalisation ne fonctionne pas sur Android
Que je vais avoir de la difficulté à obtenir de Géolocalisation de travail sur Android dans les deux émulateur (même quand je geo fix
plus de telnet) et sur l'appareil. Fonctionne sur iOS, WP8 et dans le navigateur.
Quand j'ai demander de l'appareil pour l'emplacement en utilisant le code suivant, je reçois toujours un message d'erreur (dans mon cas, personnalisé Retrieving your position failed for unknown reason.
avec null
à la fois le code d'erreur et message d'erreur).
Liées code:
successHandler = (position) ->
resolve App.Location.create
lat: position.coords.latitude
lng: position.coords.longitude
errorHandler = (error) ->
error = switch error.code
when 1
App.LocationError.create
message: 'You haven\'t shared your location.'
when 2
App.LocationError.create
message: 'Couldn\'t detect your current location.'
when 3
App.LocationError.create
message: 'Retrieving your position timeouted.'
else
App.LocationError.create
message: 'Retrieving your position failed for unknown reason. Error code: ' + error.code + '. Error message: ' + error.message
reject(error)
options =
maximumAge: Infinity # I also tried with 0
timeout: 60000
enableHighAccuracy: true
navigator.geolocation.getCurrentPosition(successHandler, errorHandler, options)
platforms/android/AndroidManifest.xml
<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" />
www/config.xml (au cas où)
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.GeoBroker" />
</feature>
À L'Aide De Cordova 3.1.0. Essai sur Android 4.2. Plugin installé. Cordova.js inclus dans index.html (d'autres plugins comme InAppBrowser fonctionnent très bien).
$ cordova plugins ls
[ 'org.apache.cordova.console',
'org.apache.cordova.device',
'org.apache.cordova.dialogs',
'org.apache.cordova.geolocation',
'org.apache.cordova.inappbrowser',
'org.apache.cordova.vibration' ]
Je suis paumé. Ai-je raté quelque chose?
- Avez-vous construire votre projet à l'Aide de la CLI?
- Les deux CLI et Phonegap Build. J'ai une application simple où geo fonctionne, donc aujourd'hui, je vais comparer ce qui est différent et mise à jour de la question.
- Kreeki plus de mises à jour avec cette question? Avez-vous à comparer vos constructions?
- Pourriez-vous modifier votre titre, il comprend le kony studio, puisque le problème et les solutions sont equivalete (;, de cette façon, vous obtiendrez plus de points de vue et donc des points xD
Vous devez vous connecter pour publier un commentaire.
Essayer cette façon de voir si cela fonctionne pour vous comme il l'a fait pour moi:
Essayer cela,
Supprimer la géolocalisation plugin
Toutefois veiller à ce que AndroidManifest.xml et config.xml propriétés reste en tant que telle
Et pour iOS dans config.xml
Ensuite, construire l'application à l'aide de la CLI et de l'exécution de l'application sur le périphérique/émulateur. Vous constaterez que vous pouvez maintenant obtenir le code d'Erreur ainsi que le message onError pour getlocation.
PLUS d'INFOS: Même après avoir fait les étapes ci-dessus, vous pourriez obtenir le délai d'attente de message constante, même après le réglage
{timeout:10000}
. La solution pour cela est assez drôle, juste à éteindre votre appareil et allumez-le et exécutez à nouveau l'application. Vous devriez être surpris de voir que le travail, tout comme moi!Ma solution a été d'utiliser le natif de support de la géolocalisation HTML5 pour android/samsung si elle existait:
Pour tous les appareils samsung que j'ai testé avec, enableHighAccuracy devait être "true" pour que cela fonctionne. Avec les appareils samsung, comme la Nexus 7, enableHighAccuracy pourrait être la valeur "false" ainsi.
navigator.geolocation
dans la première fois.À l'aide de Phonegap et Genymotion, le successHandler n'a jamais été appelé quand j'ai essayé de getCurrentPosition. En ajoutant les options:
fixe pour moi.
Selon https://issues.apache.org/jira/browse/CB-5977, Android support de plugin a été supprimé.
Yi Ming Kuan a déclaré: "La raison, nous sommes allés avec CB-5977 est que la webview sur les nouvelles versions d'Android obtiendrez GPS verrous plus rapidement que le natif de l'API, d'où son retrait. En ajoutant le plug-in sur Android ajoute simplement les autorisations nécessaires à l'utilisation de Géolocalisation HTML5 dans votre application."
de supprimer cette ligne
vérifier que tous les
<uses-permission...>
lignes et les<uses-sdk...>
ligne sont situés à l'avant de la<application...>
tag.après que désinstaller l'application manuellement sur le téléphone et l'installer à nouveau.
espère que ça aide.
lg
fastrde
Je pense que vous êtes l'ajout de plugin manuellement. utilisez la commande:(strictement si vous êtes à l'aide de la CLI de construire)
J'ai le même problème avec vous, mais j'ai enfin résolu.
La raison à se produire ce problème est que l'on à toujours utiliser le navigateur de navigateur.la géolocalisation.getCurrentPosition fonction pour localiser la position,de sorte que nous devons laisser les app, natif de cordoue mise en place de l'html5.
Dans ce fil sont beaucoup de bonnes réponses, merci à tout le monde. Je voudrais ajouter ma solution en cas sb rencontre le même.
Quand j'ai lancé mon Cordova 3.5 application sur mon Nexus, le service GPS ne démarre pas après cette ligne:
navigator.geolocation.watchPosition(...);
Au lieu de cela, j'ai eu ce message:
J'étais confus, car il n'y a pas de Java
Geolocation.java
fichier malgré l'installation du plugin.Quand il est clair par le réponse de Natsu que le Cordova équipe a décidé d'invoquer la natif objet de navigateur, j'ai commenté la Géolocalisation plugin dans le
cordova_plugins.js
:Le reste de l'installation du plugin est resté inchangé. De cette manière, l'original de google Chrome objet n'est pas se ridiculiser et tout fonctionne bien.
Je suis maintenant un peu de doute pourquoi le plugin programme d'installation ajoute le JSON entrée bien qu'il va conduire à un dysfonctionnement. Je suppose que c'est juste une petite faiblesse de conception qui ne peut pas être corrigée dès maintenant (...ou je devrais creuser beaucoup plus profondément dans l'installation du plugin).
EDIT:
Ne pas oublier de décommenter les métadonnées:
Si le code d'erreur a été de 3, de vérifier si l'emplacement dans paramètres sont activés.
C'est un travail pour moi.
l'ajout de l'en-dessous de l'autorisation dans le fichier de manifeste de résoudre mon problème
Il y a des problèmes avec cordova-plugin-la géolocalisation dernière verions.
Essayez en dessous de la version
Eu le même problème avec https://github.com/apache/cordova-plugin-geolocation. Résolu par la modification de cette configuration
{ enableHighAccuracy: true }
sur getCurrentPosition() et de tournage " sur le gps pour genymotion.