相关疑难解决方法(0)

android webview地理定位

我必须在a中检索用户的位置WebView.我使用以下Javascript执行此操作:

function getLocation() {
   navigator.geolocation.getCurrentPosition(displayLocation, handleError);
}
Run Code Online (Sandbox Code Playgroud)

但是权限请求弹出窗口永远不会打开.

我设置了这些设置:

ws.setJavaScriptEnabled(true);
ws.setGeolocationEnabled(true);
ws.setJavaScriptCanOpenWindowsAutomatically(true);
Run Code Online (Sandbox Code Playgroud)

从一个位置访问用户位置的正确方法是WebView什么?

android geolocation

97
推荐指数
6
解决办法
7万
查看次数

在Android 2.0+上使用WebView中的navigator.geolocation.getCurrentPosition(与PhoneGap相关)

我一直在使用PhoneGap并且它很棒,但是我遇到了在Verizon Droid w/2.0.1上获得位置的问题(在G1 w/1.6上按预期工作).

GeoLocation API支持已添加到Android 2.0(Eclair)中,它可以在Verizon Droid的默认浏览器中使用(在2.0.1上).也就是说,如果我访问一个网站,呼吁navigator.geolocation.getCurrentPosition(success_callback,error_callback),设备将提示当前域"想知道你的位置"的选项中一个对话框,以"共享位置"或"下降".如果我选择"共享位置",则最终会使用位置数据调用success_callback.

如果我在WebView中访问同一个网站,则对navigator.geolocation.getCurrentPosition的调用不会生成javascript错误,但不会显示"共享您的位置"对话框,也不会调用任何回调.在logcat中,我看到了什么似乎是一个相关的错误:"10月2日至15日:37:00.413:ERROR/geolocationService(16871):抓安全例外登记从系统这应该只在DumpRenderTree发生位置更新"

在我看来,WebView无法注册位置更新,因为它没有所需的权限,而这又是不提示用户获得权限的结果.尽管在Android 2.0中与GeoPermissions相关的Webkit包中添加了几个方法和对象,但我无法使用它们中的任何一个来使WebView显示GeoPermission对话框.

以下内容基于Android Developer's Guide中的Hello,WebView示例,但它添加了2.0中与GeoPermissions相关的一些调用和对象.*使用适当的网址更新(获得作者许可- 感谢Oliver!).

有没有人能够使这个工作?任何反馈都会很棒,谢谢!

package com.example.android.helloactivity;

import android.app.Activity;
import android.os.Bundle; 
import android.webkit.GeolocationPermissions;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.GeolocationPermissions.Callback;

public class HelloActivity extends Activity implements GeolocationPermissions.Callback{

WebView webview;
String geoWebsiteURL = "http://maxheapsize.com/static/html5geolocationdemo.html";
public HelloActivity() {
}

/**
 * Called with the activity is first created.
 */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.hello_activity);

    webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webview.getSettings().setGeolocationEnabled(true);  //seems like if i …
Run Code Online (Sandbox Code Playgroud)

android geolocation webview cordova

13
推荐指数
1
解决办法
3万
查看次数

无法在Android上的浏览器上使用Javascript获取GPS坐标

我是android,java和javascript编码的新手.

我正在尝试获取当前的GPS坐标,然后在Android设备上跟踪它.我正在使用webview,大部分代码都是用javascript编写的.

我已经搜索了好几天并尝试了很多不同的方法,但我无法在Android设备上获得GPS坐标.请查看代码并了解为什么我没有获得GPS位置.

需要注意的一点是:1.我下载并检查了其他传感器应用程序,可以看到当前的GPS坐标显示(因此GPS正在设备上运行).2.当我运行我的代码时,我在通知区域看到GPS搜索图标,它一直闪烁但从不修复.3.当我在笔记本电脑浏览器上只运行带有javascript的HTML文件时,它会请求共享位置的权限,然后它会给出坐标,但是同一个文件在android中没有显示任何内容.

请看下面的代码并帮我解决这个问题.我已经尝试了很多,并将此作为我最后的希望发布.

清单文件具有以下权限 -

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

Android中的主要java代码有 -

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    webView = new WebView(this);  
    webView.getSettings().setJavaScriptEnabled(true);   
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.loadUrl("file:///android_asset/mymap.html");
    setContentView(webView);
}
Run Code Online (Sandbox Code Playgroud)

使用javascript的HTML文件是 -

<!DOCTYPE html>
<html>
<body onunload="OnUnload()" onload="getLocation()">
<p id="demo">Your coordinates:</p>
<script>
var watchID;
var x=document.getElementById("demo");
function getLocation()
  {
  if (navigator.geolocation)
    {
       var options = {maximumAge:600000, timeout:100000, enableHighAccuracy: true};
       watchID = navigator.geolocation.watchPosition(showPosition,showError,options);
    }
  else{x.innerHTML="Geolocation is not supported by this …
Run Code Online (Sandbox Code Playgroud)

javascript html5 gps android geolocation

6
推荐指数
1
解决办法
7181
查看次数

标签 统计

android ×3

geolocation ×3

cordova ×1

gps ×1

html5 ×1

javascript ×1

webview ×1