Android中WebView控件支持地理位置定位方法

所属分类: 软件编程 / Android 阅读数: 47
收藏 0 赞 0 分享

Android WebView从assets中加载html5页面,实现地理位置定位,有需要的朋友可以参考下。

今天调研一个html5页面的定位问题,发现在手机浏览器上html5是可以实现定位的,但是在webview中就无法定位了。而我居然以为html5的地理定位在webview中不可行。

html5页面内容如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 </head>
 <body>
  <p id="demo">点击这个按钮,获得您的坐标:</p>
  <button onclick="getLocation()">试一下</button>
  <script>
   var x=document.getElementById("demo");
   function getLocation()
   {
    if (navigator.geolocation)
    {
     navigator.geolocation.watchPosition(showPosition);
    }
    else{
     x.innerHTML="Geolocation is not supported by this browser.";
    }
   }

   function showPosition(position)
   {
    x.innerHTML="Latitude: " + position.coords.latitude +
"<br />Longitude: " + position.coords.longitude; 
   }
  </script>
 </body>
</html>

后来又在网上查了查,发现,需要设置一些东西。设置websetting的属性:

webView.setWebViewClient(new WebViewClient());
//webView.loadUrl("http://news.baidu.com/");
webView.loadUrl("file:///android_asset/index.html");


WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);


/**
* 以下部分可以不要
*/
// //启用数据库 
// webSettings.setDatabaseEnabled(true); 
// String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
//
// //启用地理定位 
// webSettings.setGeolocationEnabled(true); 
// //设置定位的数据库路径 
// webSettings.setGeolocationDatabasePath(dir); 


/**
* 此处很重要,必须要
*/
//***最重要的方法,一定要设置,这就是出不来的主要原因
webSettings.setDomStorageEnabled(true);
webView.setWebChromeClient(new WebChromeClient(){

//配置权限(同样在WebChromeClient中实现)
@Override
public void onGeolocationPermissionsShowPrompt(String origin,
Callback callback) {
 callback.invoke(origin, true, false); 
 super.onGeolocationPermissionsShowPrompt(origin, callback);
}

});

//在Androidmanifest.xml中开启权限

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

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

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

在某些限制应用定位权限的手机中,需要开启应用的定位权限,否则会定位失败

问题解决!

特别试了试:

同时打开网络和GPS可以定位,获得的是经纬度信息。

只打开网络可以定位,只打开GPS也可以定位。

关闭网络和GPS也可以定位。

由此可见,是由地理位置定位所得,只能获得经纬度信息。

若要获得详细的地址信息,需要调用地图API实现。

以上这篇Android中WebView控件支持地理位置定位方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

使用ViewPager实现android软件使用向导功能实现步骤

现在的大部分android软件,都是使用说明,就是第一次使用该软件时,会出现向导,可以左右滑动,然后就进入应用的主界面了,下面我们就实现这个功能
收藏 0 赞 0 分享

android在异步任务中关闭Cursor的代码方法

android在异步任务中如何关闭Cursor?在我们开发应用的时候,很多时候会遇到这种问题,下面我们就看看代码如何实现
收藏 0 赞 0 分享

Android自定义桌面功能代码实现

android自定义桌面其实很简单,看一个例子就明白了
收藏 0 赞 0 分享

android将图片转换存到数据库再从数据库读取转换成图片实现代码

有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来
收藏 0 赞 0 分享

TextView显示系统时间(时钟功能带秒针变化

用System.currentTimeMillis()可以获取系统当前的时间,我们可以开启一个线程,然后通过handler发消息,来实时的更新TextView上显示的系统时间,可以做一个时钟的功能
收藏 0 赞 0 分享

Android用ListView显示SDCard文件列表的小例子

本文简单实现了用ListView显示SDCard文件列表,目录的回退等功能暂不讨论,获取文件列表,files即为所选择目录下的所有文件列表
收藏 0 赞 0 分享

Android拦截外拨电话程序示例

这篇文章主要介绍了Android拦截外拨电话的示例,大家参考使用吧
收藏 0 赞 0 分享

通过Html网页调用本地安卓(android)app程序代码

如何使用html网页和本地app进行传递数据呢?经过研究,发现还是有方法的,总结了一下,大致有一下几种方式
收藏 0 赞 0 分享

android Textview文字监控(Textview使用方法)

以手机号充值为例,当用户输入最后一位数时候,进行汇率的变换,本文就实现类似这样的功能
收藏 0 赞 0 分享

Android ListView长按弹出菜单二种实现方式示例

这篇文章主要介绍了Android ListView长按弹出菜单的方法,大家参考实现
收藏 0 赞 0 分享
查看更多