QWebView HTML5 GeoLocation sur la plate-forme Android

En essayant d'obtenir les coordonnées GPS dans une page Web HTML5 vue avec le port Necessitas de QWebView. Cependant, il répond toujours avec Non pris en charge.

function load( ) { if ( navigator.geolocation ) { alert( "Supported." ); } else { alert( "Not Supported!" ); } } 

J'ai modifié le QWebPage pour autoriser les autorisations:

  • Problème de lecture d'une chanson dans Google Music player
  • Android Horizontal Recycler Voir scroll Direction
  • Comportement de pression de la touche Accueil
  • Comment un fichier .apk est-il signé?
  • Question Progaurd "Attention: Ignorer l'attribut InnerClasses pour une classe interne anonyme"
  • Unchecked Call to 'execute (Params ...)' comme membre du type brut 'android.os.AsyncTask'
  •  BrowserWebPage::BrowserWebPage( QObject* parent ) : QWebPage( parent ) { connect( this, SIGNAL( featurePermissionRequested( QWebFrame*, QWebPage::Feature ) ), SLOT( permissionRequested( QWebFrame*, QWebPage::Feature ) ) ); } void BrowserWebPage::permissionRequested( QWebFrame* frame, QWebPage::Feature feature ) { if ( feature == Geolocation ) { setFeaturePermission( frame, feature, PermissionGrantedByUser ); } else //denied { setFeaturePermission( frame, feature, PermissionDeniedByUser ); } } 

    Et définissez les autorisations suivantes:

    Android.permission.INTERNET

    Android.permission.ACCESS_FINE_LOCATION

    Android.permission.ACCESS_COARSE_LOCATION

    MODIFIER

    Selon cette page, l'API GeoLocation est présente dans la construction de QtWebKit.

    Http://trac.webkit.org/wiki/QtWebKitFeatures22

    DÉTAILS

    Téléphone: Galaxy Nexus

    Plate-forme: Android 4.1.1 (SDK 14)

    Framework: Qt 4.8.0 pour Android armv7a

  • Convention de nomination pour transmettre des données à travers des extras dans Android
  • Comment configurer le bouton radio vérifié par défaut dans radiogroup avec Android
  • Enregistrer les données sensibles dans React Native
  • Comment puis-je découvrir l'utilisation de la mémoire de mon application dans Android?
  • Comment monter le fichier img Android sous Linux?
  • Comment définir la date maximale dans la boîte de dialogue datepicker dans Android?
  • 2 Solutions collect form web for “QWebView HTML5 GeoLocation sur la plate-forme Android”

    Je pense que vous devrez définir une localisation grossière et une permission Internet car l'emplacement est utilisé uniquement pour les gps si j'ai raison. En tout cas avoir les deux est une bonne cause si gps n'est pas disponible, l'emplacement sur votre connexion Internet sera utilisé.

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

    Je n'ai vraiment pas d'expérience avec qtwebkit, mais ce sont les bases que je peux vous dire.

    Je viens d'essayer quelque chose de très similaire et je n'ai pas pu accéder au navigator.geolocation, donc j'ai mis en place une classe de géolocalisation personnelle et l'ai ajouté au cadre.

    L'objet de mygeolocation a implémenté un signal et une fente

     signal: void updatepos(float lon, float lat); // called from get location when location is found slot: void getlocation(); // gets location and calls updatepos 

    Après la chargement de la page:

     frame->addToJavaScriptWindowObject(QString("geo"), geo); frame->evaluateJavaScript("init()"); 

    Où geo était une instance de mon objet de géolocalisation

    En javascript, j'ai connecté ma mise à jour de signal d'objet géo à une fonction,

     function update(lon,lat) { // do stuff with lon, lat } function init(){ geo.connect(update); // connect to QT code geo.getlocation(); // ask for update from QT code } 

    C'est un peu de pseudo-codage – je n'ai pas le code original disponible pour le moment.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.