管理位置权限

2024-02-16 13:38 更新

Web组件提供位置权限管理能力。开发者可以通过onGeolocationShow()接口对某个网站进行位置权限管理。Web组件根据接口响应结果,决定是否赋予前端页面权限。获取设备位置,需要开发者配置ohos.permission.LOCATION权限。

在下面的示例中,用户点击前端页面"获取位置"按钮,Web组件通过弹窗的形式通知应用侧位置权限请求消息,示例代码如下:

  • 前端页面代码。
    1. <!DOCTYPE html>
    2. <html>
    3. <body>
    4. <p id="locationInfo">位置信息</p>
    5. <button onclick="getLocation()">获取位置</button>
    6. <script>
    7. var locationInfo=document.getElementById("locationInfo");
    8. function getLocation(){
    9. if (navigator.geolocation) {
    10. <!-- 前端页面访问设备地理位置 -->
    11. navigator.geolocation.getCurrentPosition(showPosition);
    12. }
    13. }
    14. function showPosition(position){
    15. locationInfo.innerHTML="Latitude: " + position.coords.latitude + "<br />Longitude: " + position.coords.longitude;
    16. }
    17. </script>
    18. </body>
    19. </html>
  • 应用代码。
    1. // xxx.ets
    2. import web_webview from '@ohos.web.webview';
    3. @Entry
    4. @Component
    5. struct WebComponent {
    6. controller: web_webview.WebviewController = new web_webview.WebviewController();
    7. build() {
    8. Column() {
    9. Web({ src:$rawfile('getLocation.html'), controller:this.controller })
    10. .geolocationAccess(true)
    11. .onGeolocationShow((event) => { // 地理位置权限申请通知
    12. AlertDialog.show({
    13. title: '位置权限请求',
    14. message: '是否允许获取位置信息',
    15. primaryButton: {
    16. value: 'cancel',
    17. action: () => {
    18. event.geolocation.invoke(event.origin, false, false); // 不允许此站点地理位置权限请求
    19. }
    20. },
    21. secondaryButton: {
    22. value: 'ok',
    23. action: () => {
    24. event.geolocation.invoke(event.origin, true, false); // 允许此站点地理位置权限请求
    25. }
    26. },
    27. cancel: () => {
    28. event.geolocation.invoke(event.origin, false, false); // 不允许此站点地理位置权限请求
    29. }
    30. })
    31. })
    32. }
    33. }
    34. }
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号