`
龙儿筝
  • 浏览: 7433 次
社区版块
存档分类
最新评论

鸿蒙安全控件之位置控件简介

阅读更多

位置控件使用直观且易懂的通用标识,让用户明确地知道这是一个获取位置信息的按钮。这满足了授权场景需要匹配用户真实意图的需求。只有当用户主观愿意,并且明确了解使用场景后点击位置控件,应用才会获得临时的授权,获取位置信息并完成相应的服务功能。

一旦应用集成了位置控件,用户点击该控件后,无论应用是否已经申请过或被授予精准定位权限,都会在本次前台期间获得精准定位的授权,可以调用位置服务获取精准定位。

对于不是强位置关联应用(例如导航、运动健康等)的应用,只在部分前台场景需要使用位置信息(例如定位城市、打卡、分享位置等)。如果需要长时间使用或是在后台使用位置信息,建议申请位置权限。

位置控件效果如图所示。
img1

约束与限制

  • 当用户首次点击应用中的位置控件,系统将弹窗请求用户授权。如果用户点击“取消”,弹窗消失,应用无授权,用户再次点击位置控件时,将会重新弹窗;如果用户点击“允许”,弹窗消失,应用将被授予临时位置权限,此后点击该应用的位置控件将不会弹窗。
  • 精准定位的临时授权会持续到灭屏、应用切后台、应用退出等任一情况发生,然后恢复到临时授权之前的授权状态(授予/未授予/未申请)
  • 应用在授权期间没有调用次数限制。
  • 为了保障用户的隐私不被恶意应用获取,应用需确保安全控件是可见的且用户能够识别的。开发者需要合理的配置控件的尺寸、颜色等属性,避免视觉混淆的情况,如果发生因控件的样式不合法导致授权失败的情况,请检查设备错误日志。

开发步骤

以在聊天界面发送实时定位信息为例。在当前场景下,应用仅需要在前台期间,短暂地访问当前位置,不需要长时间使用。此时,可以直接使用安全控件中的位置控件,免去权限申请和权限请求等环节,获得临时授权,满足权限最小化,提升用户的隐私体验。

参考以下步骤,实现效果:点击控件“当前位置”获取临时精准定位授权,获取授权后,弹窗提示具体位置信息,效果图请见上文。

  1. 引入位置服务依赖。
import { geoLocationManager } from '@kit.LocationKit';
 
  1. 添加位置控件和获取当前位置信息。
    安全控件是由图标、文本、背景组成的类似Button的按钮,其中图标、文本两者至少有其一,背景是必选的。图标和文本不支持自定义,仅支持在已有的选项中选择。应用申明安全控件的接口时,分为传参和不传参两种,不传参默认创建图标+文字+背景的按钮,传参根据传入的参数创建,不包含没有配置的元素。

    当前示例使用默认参数,具体请参见LocationButton控件。此外,所有安全控件都继承安全控件通用属性,可用于定制样式。

    在LocationButton的onClick()回调中通过调用geoLocationManager模块提供的方法获取当前位置信息。

import { geoLocationManager } from '@kit.LocationKit';
import { promptAction } from '@kit.ArkUI';
import { BusinessError } from '@kit.BasicServicesKit';

// 获取当前位置信息
function getCurrentLocationInfo() {
  const requestInfo: geoLocationManager.LocationRequest = {
    'priority': geoLocationManager.LocationRequestPriority.FIRST_FIX,
    'scenario': geoLocationManager.LocationRequestScenario.UNSET,
    'timeInterval': 1,
    'distanceInterval': 0,
    'maxAccuracy': 0
  };
  try {
    geoLocationManager.getCurrentLocation(requestInfo)
      .then((location: geoLocationManager.Location) => {
        promptAction.showToast({ message: JSON.stringify(location) });
      })
      .catch((err: BusinessError) => {
        console.error(`Failed to get current location. Code is ${err.code}, message is ${err.message}`);
      });
  } catch (err) {
    console.error(`Failed to get current location. Code is ${err.code}, message is ${err.message}`);
  }
}

@Entry
@Component
struct Index {
  build() {
    Row() {
      Column({ space: 10 }) {
        LocationButton({
          icon: LocationIconStyle.LINES,
          text: LocationDescription.CURRENT_LOCATION,
          buttonType: ButtonType.Normal
        })
          .padding({top: 12, bottom: 12, left: 24, right: 24})
          .onClick((event: ClickEvent, result: LocationButtonOnClickResult) => {
            if (result === LocationButtonOnClickResult.SUCCESS) {
              // 免去权限申请和权限请求等环节,获得临时授权,获取位置信息授权
              getCurrentLocationInfo();
            } else {
              promptAction.showToast({ message: '获取位置信息失败!' })
            }
          })
      }
      .width('100%')
    }
    .height('100%')
    .backgroundColor(0xF1F3F5)
  }
}
0
0
分享到:
评论

相关推荐

    博客的《从零开始看鸿蒙布局文件与鸿蒙基础控件》文章的配套代码

    在鸿蒙操作系统(HarmonyOS)的开发过程中,布局文件是构建用户界面(UI)的基础。这个名为"HarmonyXml.rar"的压缩包文件包含了与《从零开始看鸿蒙布局文件与鸿蒙基础控件》这篇文章配套的代码示例,帮助读者深入...

    如何让安卓(Android)子控件超出父控件的范围显示

    在Android开发中,有时我们需要设计布局时,让子控件的部分内容超出其父控件的边界,以实现某些特殊的视觉效果或交互体验。例如,一个底部导航栏可能需要部分悬停在屏幕下方,或者一个按钮需要延伸到屏幕边缘。本篇...

    鸿蒙广告图片轮播控件.zip

    描述中的“鸿蒙广告图片轮播控件”暗示了这是一个专门为鸿蒙OS定制的UI组件,它可能包含了自动切换、手势滑动、图片加载优化以及广告跳转等功能。鸿蒙系统是华为开发的面向物联网时代的全场景分布式操作系统,注重跨...

    鸿蒙系统下APP安全测试方案_v1.1.1.docx

    ### 鸿蒙系统下APP安全测试方案 #### 1. 引言 ##### 1.1 测试目的 在当前数字化时代,移动应用程序的安全性成为企业和用户关注的重点。随着鸿蒙系统的推出和发展,针对其上的应用程序进行严格的安全测试变得尤为...

    HarmonyOS-Demo鸿蒙技术开发

    【标题】"HarmonyOS-Demo鸿蒙技术开发"揭示了本项目的核心是关于鸿蒙操作系统(HarmonyOS)的应用程序或服务的示例代码。HarmonyOS是华为公司推出的一款面向全场景的分布式操作系统,旨在打破不同设备之间的界限,...

    HarmonyOS移动开发课程PPT(共11章).zip

    在HarmonyOS中,UI设计遵循Material Design原则,提供了丰富的控件和布局方式。我们将学习如何使用XML布局文件定义界面,以及动态编程方式改变界面元素。此外,还将探讨适配不同屏幕尺寸和方向的方法。 第5章:数据...

    HarmonyOS开发学习路线图.pdf

    - **安全性**:理解HarmonyOS的安全机制,包括权限管理、数据加密等,保障应用的安全性。 8. **JavaScript应用开发与自动化测试** - **JavaScript API**:掌握使用JavaScript进行HarmonyOS开发的API,包括组件、...

    HarmonyOS组件库使用实践.pdf

    ### HarmonyOS组件库使用实践 #### 一、HarmonyOS组件库介绍 HarmonyOS作为华为推出的面向全场景的分布式操作系统,在不断发展中积累了丰富的组件库资源。这些组件库旨在简化开发者的开发流程,提高开发效率,并...

    harmonyos-samples.zip

    HarmonyOS,全称为鸿蒙操作系统,是华为公司推出的一款面向未来、面向全场景的分布式操作系统。HarmonyOS致力于提供一种跨设备、无缝协同的用户体验,它打破了传统单一设备的操作系统界限,通过分布式技术实现了硬件...

    如何使用JsJava开发HarmonyOS UI.pdf

    ### 如何使用Js/Java开发HarmonyOS UI #### 创建第一个HarmonyOS应用 要创建一个HarmonyOS应用,首先需要访问官方网站(https://developer.harmonyos.com/cn/develop/deveco-studio)下载并安装DevEco Studio。安装...

    HarmonyOS JS UI框架简介1

    HarmonyOS JS UI框架是华为推出的面向HarmonyOS操作系统的一款高效、跨设备的用户界面开发框架,它允许开发者使用JS、HTML和CSS进行应用开发,同时支持与Java的混合编程。该框架的主要特点包括声明式编程、跨设备...

    3HarmonyOS图形栈测试技术深度分析1

    HarmonyOS图形栈测试技术深度分析1主要涵盖了HarmonyOS自研图形栈的整体架构、测试能力和优化方案。本文将深入探讨这些关键知识点。 1. **HarmonyOS图形栈整体架构**: HarmonyOS图形栈由多个层次组成,包括...

    基于Java开发的鸿蒙系统广告图片轮播控件设计源码

    该项目为鸿蒙系统量身定制的广告图片轮播控件源码,采用Java语言开发,共计包含67个文件,涵盖19个Java源文件、13个XML配置文件、8个JPG图片文件、4个Git忽略文件、4个Gradle文件、4个JSON配置文件以及少量其他类型...

    HarmonyOS应用开发-常用组件与布局

    6. **数据绑定**:HarmonyOS 提供的数据绑定机制使得 UI 控件的状态与应用程序的数据模型可以直接关联。这有助于减少代码量,提高代码可读性和维护性。在登录页面中,可以通过数据绑定将输入框的文本与对应的变量...

    HarmonyOS NEXT 地图服务中‘我的位置’功能全解析源代码

    推荐采用安全控件`LocationButton`方式,此方式能够临时获取精准定位权限,无需进行权限弹框授权确认。另一种方式则是申请授权方式,该方式需要动态向用申请设备位置信息`ohos.permission.LOCATION`和设备模糊位置...

    鸿蒙计算器源代码.rar

    【鸿蒙计算器源代码】是针对华为自主开发的HarmonyOS操作系统设计的一款计算器应用的源码集合。这款软件因其在鸿蒙系统上的优秀表现和实用性而受到赞誉。开发者可以通过研究这些源代码,深入理解如何在鸿蒙OS上构建...

    HarmonyOS智慧屏设计文档

    【 HarmonyOS 智慧屏设计文档 】深入解析了华为鸿蒙操作系统在智慧屏设备上的设计理念和系统架构,旨在为开发者和设计师提供一个全面理解智慧屏应用开发的基础框架。 一、设计原则 1.1 **沉浸**:设计强调用户体验...

    鸿蒙高级开发者认证题库

    - HUKS是HarmonyOS提供的用于安全存储和管理密钥的服务。 **18. 发布应用渠道** - **正确选项:** 发布后的鸿蒙应用可以在华为应用市场获取。 - 华为应用市场是HarmonyOS应用的主要发布渠道之一。 **19. 测试...

    treeview控件

    Treeview控件是Windows应用程序开发中常用的一种图形用户界面(GUI)组件,它通常用于显示层级结构的数据,如文件系统、组织结构或者数据库中的树状数据。在本篇中,我们将深入探讨Treeview控件的功能、特性以及如何...

    手机鸿蒙OS的Java类库.zip

    华为推出的鸿蒙操作系统(HarmonyOS),作为一款面向未来、跨平台的操作系统,不仅在硬件层面展现了其强大的兼容性和灵活性,还在软件开发领域提供了丰富的工具和库支持。其中,鸿蒙OS的Java类库是针对开发者设计的...

Global site tag (gtag.js) - Google Analytics