ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-使用应用程序中嵌入的浏览器时,无法从Android上的网页访问地理位置

2019-11-19 01:25:37  阅读:261  来源: 互联网

标签:twebbrowser geolocation javascript android delphi


我正在使用navigator.geolocation.getCurrentPosition()获取用户的当前位置.将这些网页上的位置功能直接加载到iOS和Android上的网络浏览器中时,效果很好.询问用户是否允许访问位置,该位置就从那里访问.不管哪个Web浏览器或OS都可以正常工作.

但是,如果在嵌入Android的应用程序(在这种情况下为TWebBrowser组件)中嵌入的Web浏览器中加载了相同的网页,则定位服务将不起作用.调用navigator.geolocation.getCurrentPosition()会导致Permission_denied错误消息.甚至没有询问用户是否允许访问位置;它只会引发Permission_denied错误.

我检查了一些明显的事情:

>代码前面是if(navigator.geolocation){,所以我知道
有地理定位功能.
>该应用的构建和部署具有位置服务的权限,当该应用访问代码中其他位置的位置服务(在浏览器外部,
那是).
>被拒绝的权限仅在网页嵌入到应用程序中嵌入的Web浏览器中时发生.
>仅在Android上发生. iOS运行正常.
>嵌入在应用程序中的Web浏览器将调用设备上可用的本机Web浏览器.也就是说,所使用的网络浏览器不是一些特殊的自定义浏览器.该应用程序是使用Delphi Firemonkey构建的,并使用TWebBrowser组件.

我一直在具有不同Android版本的多个Android设备(直到最新的v6)上进行了尝试,它们的行为都相同.这使我认为我正在遇到一些Android OS的“功能”.有没有解决的办法,因为我的应用程序功能还取决于从网页访问位置服务的能力.

解决方法是,从应用程序调用网页时,我会将当前位置传递给参数中的网页.但是当用户四处移动时,我无法使用WatchLocation更新地图上的位置.

解决方法:

您可以使用此代码先检查权限

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            // TODO: Consider calling
            //    ActivityCompat#requestPermissions
            // here to request the missing permissions, and then overriding
            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
            //                                          int[] grantResults)
            // to handle the case where the user grants the permission. See the documentation
            // for ActivityCompat#requestPermissions for more details.
            return;
        }

标签:twebbrowser,geolocation,javascript,android,delphi
来源: https://codeday.me/bug/20191119/2032486.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有