2012-09-14 11 views
11

Intentando obtener las coordenadas GPS en una página web HTML5 vista con el puerto de QWebView de Necessitas. Sin embargo, siempre responde con No admitido.QWebView HTML5 GeoLocation en la plataforma Android

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

Me ha modificado la QWebPage para permitir permisos:

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); 
    } 
} 

y establezca los siguientes permisos:

android.permission.INTERNET

android.permission.ACCESS_FINE_LOCATION

android.permission.ACCESS_COARSE_LOCATION

EDITAR

De acuerdo a esta página de la API de geolocalización está presente dentro de la estructura QtWebKit.

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

DETALLES

Teléfono: Galaxy Nexus

Plataforma: Android 4.1.1 (SDK 14)

Marco: 4.8.0 Qt para armv7a Android

+1

Creo que 'android.permission.FINE_LOCATION' debe ser' android.permission.ACCESS_FINE_LOCATION'. Además, ¿has visto esta [respuesta] (http://stackoverflow.com/a/5423026/624093)? Parece tener algunos buenos consejos (no específicos de Qt, pero aún así pueden ayudar). – rexmac

+0

@rexmac Gracias, eso fue un error en la publicación. – Corvusoft

Respuesta

1

Creo que tendrá que establecer la ubicación aproximada y el permiso de Internet porque el buena ubicación solo se usa para gps si estoy bien. en cualquier caso, tener ambos es una buena causa, si gps no está disponible, se usará la ubicación sobre su conexión a Internet.

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

Realmente no tengo experiencia con qtwebkit pero esto es lo básico que puedo decirte.

+0

Gracias por su tiempo. Sin embargo, esto ya se ha intentado sin suerte. – Corvusoft

+0

Eche un vistazo a esto http://www.developer.nokia.com/Community/Discussion/showthread.php?224847-QtWebkit-and-javascript-navigator.geolocation.getCurrentPosition – SunnySonic

1

Probé algo muy similar y no conseguí que navigator.geolocation funcionara, así que implementé una clase de geolocalización y la agregué al marco.

objeto mygeolocation implementó una señal y una ranura

signal: 
void updatepos(float lon, float lat); // called from get location when location is found 

slot: 
void getlocation(); // gets location and calls updatepos 

tras página había cargado:

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

Dónde geo fue ejemplo de mi objeto de geolocalización

en JavaScript I conectado mi objeto geo actualización de señal a una función,

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 
} 

Esto es un poco pseudocodificación - No tengo el código original disponible en este momento.

Cuestiones relacionadas