Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

QWebView HTML5 GeoLocation on Android platform

Attempting to get the GPS coordinates in a HTML5 web page viewed with Necessitas's port of QWebView. However it always responds with Not Supported.

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

I've altered the QWebPage to allow permissions:

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

And set the following permissions:

android.permission.INTERNET

android.permission.ACCESS_FINE_LOCATION

android.permission.ACCESS_COARSE_LOCATION

EDIT

According to this page the GeoLocation API is present within the QtWebKit build.

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

DETAILS

Phone: Galaxy Nexus

Platform: Android 4.1.1 (SDK 14)

Framework: Qt 4.8.0 for Android armv7a

like image 257
Ben Crowhurst Avatar asked Sep 14 '12 10:09

Ben Crowhurst


1 Answers

I think you will have to set coarse location and internet permission because the fine location is only used for gps if im right. in any case having both is good cause if gps is not available the location over your internet connection will be used.

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

I don't really have experience with qtwebkit but this is the basics i can tell you.

like image 81
SunnySonic Avatar answered Oct 04 '22 22:10

SunnySonic