我必须在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什么?
我一直在使用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,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)