Android平台上的QWebView HTML5 GeoLocation

Ben*_*rst 11 javascript c++ html5 android qt4

尝试使用Necessitas的QWebView端口查看HTML5网页中的GPS坐标.但是它总是响应不支持.

function load( )
{
   if ( navigator.geolocation )
   {
      alert( "Supported." );
   }
   else
   {
      alert( "Not Supported!" );
   }
}
Run Code Online (Sandbox Code Playgroud)

我已经改变了QWebPage以允许权限:

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 );
    }
}
Run Code Online (Sandbox Code Playgroud)

并设置以下权限:

android.permission.INTERNET对

android.permission.ACCESS_FINE_LOCATION

android.permission.ACCESS_COARSE_LOCATION

编辑

根据此页面,GeoLocation API存在于QtWebKit构建中.

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

细节

电话:Galaxy Nexus

平台:Android 4.1.1(SDK 14)

框架:Qt 4.8.0 for Android armv7a

Sun*_*nic 1

我认为你必须设置粗略位置和互联网权限,因为如果我是对的,精细位置仅用于 GPS。在任何情况下,两者都有是很好的原因,如果 GPS 不可用,则将使用互联网连接上的位置。

   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
   <uses-permission android:name="android.permission.INTERNET" /> 
Run Code Online (Sandbox Code Playgroud)

我确实没有使用 qtwebkit 的经验,但这是我可以告诉你的基础知识。