登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 150|回复: 4

android中webview定位问题示例详解,android webview缓存

[复制链接]

473

主题

834

帖子

5804

安币

手工艺人

发表于 2018-3-13 10:27:59 | 显示全部楼层 |阅读模式

            

        前言

        现在很多app里都内置了web网页(hyprid app),比如说很多电商平台,淘宝、京东、聚划算等等

        

201712585240852.jpg

        京东首页

        那么这种该如何实现呢?其实这是android里一个叫webview的组件实现的。

        最近在做安卓的网页开发。有一个页面需要用到定位,但是一直定位获取失败。很难过。网上教程也很多,但是无一例外全部失败。最后老夫花了3天时间,呕心沥血,终于研制出了解决方案。

        三步走战略:

        一、获取权限

        android 6.0 以后,需要动态的获取位置或者存储权限,按照各自的爱好放置位置。我是应用开启初始化的时候,放在mainactivity中的oncreate方法里。

[Java] 查看源文件 复制代码
 if (activitycompat.checkselfpermission(this, manifest.permission.access_coarse_location)
  != packagemanager.permission_granted
  || activitycompat.checkselfpermission(this, manifest.permission.access_fine_location)
  != packagemanager.permission_granted
  || activitycompat.checkselfpermission(this, manifest.permission.write_external_storage)
  != packagemanager.permission_granted) {
  toast.maketext(getapplicationcontext(),"没有权限,请手动开启定位权限",toast.length_short).show();
  // 申请一个(或多个)权限,并提供用于回调返回的获取码(用户定义)
  activitycompat.requestpermissions(mainactivity.this,new string[]{manifest.permission.access_coarse_location, manifest.permission.access_fine_location, manifest.permission.write_external_storage}, 100);
  return false;
 }

        二、webview setting 设置(复制了别人代码)

[Java] 查看源文件 复制代码
webview webview = (webview)findviewbyid(r.id.webview); 
websettings websettings = webview.getsettings(); 
 
//webview支持js脚本 
websettings.setjavascriptenabled(true); 
 
//启用数据库 
websettings.setdatabaseenabled(true); 
 
//设置定位的数据库路径 
string dir = this.getapplicationcontext().getdir("database", context.mode_private).getpath(); 
websettings.setgeolocationdatabasepath(dir); 
 
//启用地理定位 
websettings.setgeolocationenabled(true); 
 
//开启domstorage缓存 
websettings.setdomstorageenabled(true) 
 
//配置权限 
webview.setwebchromeclient(new webchromeclient() { 
 @override 
 public void onreceivedicon(webview view, bitmap icon) { 
 super.onreceivedicon(view, icon); 
 
} 
 
@override 
public void ongeolocationpermissionsshowprompt(string origin,callback callback) { 
 callback.invoke(origin, true, false); 
 super.ongeolocationpermissionsshowprompt(origin, callback); 
 
} 
}); 

        三 网络权限

[Java] 查看源文件 复制代码
 <uses-permission android:name="android.permission.internet" />
 <uses-permission android:name="android.permission.write_external_storage" />
 <uses-permission android:name="android.permission.access_network_state" />
 <uses-permission android:name="android.permission.access_wifi_state" />
 <uses-permission android:name="android.permission.read_phone_state" />
 <uses-permission android:name="android.permission.access_coarse_location" />
 <uses-permission android:name="android.permission.access_fine_location" />
 <uses-permission android:name="android.permission.access_location_extra_commands" />
 <uses-permission android:name="android.permission.change_wifi_state" />

        网上的教程到这里就结束了。一般都会告诉你,朋友你定位能用了。然而我并不能用啊!!!

        检查来检查去。没啥毛病啊。一模一样啊!

        四 build gradle (我用的是as )修改

        自己app的build.gradle 里面一个targetsdkversion 23 (为什么写23 高德地图告诉我的)

        然后你的工程地图能用了。

        参考网站:http://blog.csdn.net/cheunjq/article/details/54729875

        总结



        

441

主题

828

帖子

1970

安币

手工艺人

发表于 2018-3-13 22:58:16 | 显示全部楼层
不错不错,楼主辛苦了。。。

0

主题

1万

帖子

2420

安币

Android大神

Rank: 6Rank: 6

发表于 2018-3-14 21:45:33 | 显示全部楼层
楼主是好人,回个帖会有安币吗?

451

主题

850

帖子

1975

安币

手工艺人

发表于 2018-3-16 04:38:11 | 显示全部楼层
感谢大神~

446

主题

785

帖子

2007

安币

手工艺人

发表于 2018-3-17 10:15:42 | 显示全部楼层
楼主威武,以后多发干货,多办活动~!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表