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

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

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

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

位置控件效果如图所示。
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)}
}.width('100%')}.height('100%').backgroundColor(0xF1F3F5)}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙主流路由详解

鸿蒙主流路由详解 Navigation Navigation更适合于一次开发,多端部署,也是官方主流推荐的一种路由控制方式,但是,使用起来入侵耦合度高,所以,一般会使用HMRouter,这也是官方主流推荐的路由 Navigation官网地址 个人源码地址 路由跳转 第一步-定义路由栈 Provide(PageInfo) pag…

spring boot有那些优势?

Spring Boot 作为 Spring 框架的一个扩展,旨在简化新 Spring 应用程序的初始搭建以及开发过程。它通过提供一系列默认配置来快速启动基于 Spring 的应用,并且减少了大量的样板代码和配置工作。以下是使用 Spring Boot 的一些主要优势: 简化配…

Jackson库中JsonInclude的使用

简介 JsonInclude是 Jackson 库(Java 中用于处理 JSON 数据的流行库)中的一个注解。它用于控制在序列化 Java 对象为 JSON 时,哪些属性应该被包含在 JSON 输出中。这个注解提供了多种策略来决定属性的包含与否,帮助减少不必要的数…

JavaFX:简介、使用场景、常见问题及对比其他框架分析

1. JavaFX 简介 1.1 什么是 JavaFX? JavaFX 是一个基于 Java 的 GUI 工具包,支持创建桌面和互联网应用。它通过 Scene Graph(场景图)模型渲染 UI 元素,并采用声明式编程风格。自 JDK 11 起,JavaFX 被移除…

88页精品PPT | 某电信集团大数据平台建设方案技术交流

这份PPT文档是关于某电信集团大数据平台建设的技术交流方案,内容涵盖了现状分析、规划思路、产品设计、成功案例以及干货附录等多个部分。文档详细介绍了集团大数据平台的建设背景、技术特点、面临的挑战和痛点,以及具体的技术架构和实施策略。还包括了数…

Java设计模式笔记(一)

Java设计模式笔记(一) (23种设计模式由于篇幅较大分为两篇展示) 一、设计模式介绍 1、设计模式的目的 让程序具有更好的: 代码重用性可读性可扩展性可靠性高内聚,低耦合 2、设计模式的七大原则 单一职…

在使用PCA算法进行数据压缩降维时,如何确定最佳维度是一个关键问题?

一、PCA算法的基本原理 PCA算法的核心思想是通过正交变换,将一组可能相关的变量转换成一组线性不相关的变量,称为主成分。这组主成分能够以最小的信息损失来尽可能多地保留原始数据集的变异性。具体来说,PCA算法包括以下几个步骤&#xff1a…

shodan(7)

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

三维地形图计算软件(三)-原基于PYQT5+pyqtgraph旧代码

最先入手设计三维地形图及平基挖填方计算软件时,地形图的显示方案是:三维视图基于pyqtgraph.opengl显示和二维视图基于pyqtgraph的PlotWidget来显示地形地貌,作到一半时就发现,地形点过多时,将会造成系统卡顿(加载时主…

从入门到精通数据结构----四大排序(上)

目录 首言: 1. 插入排序 1.1 直接插入排序 1.2 希尔排序 2. 选择排序 2.1 直接选择排序 2.2 堆排序 3. 交换排序 3.1 冒泡排序 3.2 快排 结尾: 首言: 本篇文章主要介绍常见的四大排序:交换排序、选择排序、插入排序、归并排…

集合Queue、Deque、LinkedList、ArrayDeque、PriorityQueue详解

1、 Queue与Deque的区别 在研究java集合源码的时候,发现了一个很少用但是很有趣的点:Queue以及Deque; 平常在写leetcode经常用LinkedList向上转型Deque作为栈或者队列使用,但是一直都不知道Queue的作用,于是就直接官方…

Qwen2.5-7B大模型微调记录

Qwen2.5-7B大模型微调记录 研究需要,需要搞一个大模型出来,没有太多的时间自己训练,准备用现成的开源大模型,然后结合研究方向进行微调 前前后后折腾大半个月,总算做完了第一个微调的大模型,模型基于阿里…

Spring Boot 开发环境搭建及示例应用

文章目录 1. 准备开发工具安装 JDK安装 IDE安装 Maven 2. 创建 Spring Boot 项目使用 Spring Initializr 创建项目导入项目到 IDE 3. 编写代码主类创建控制器创建实体类创建仓库接口创建服务类创建控制器 4. 配置文件5. 运行应用程序6. 测试应用程序7. 调试与优化8. 部署应用 1…

CentOS Docker 安装

CentOS Docker 安装 1. 简介 CentOS 是一个基于 Red Hat Enterprise Linux (RHEL) 的开源操作系统,广泛用于服务器环境。Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的…

docker 的各种操作

Docker pull拉取镜像报错“Error response from daemon: Get "https://registry-1.docker.io/v2”解决办法: 解决方法:将 /etc/docker/daemon.json 中的"registry-mirrors"的内容换成如下内容 { "registry-mirrors": [ "…

在xml的sql的子查询中使用row_number over之后再在mapper的接口层传入Page对象实现分页功能,出现Bug

1.报错信息复现&#xff1a; Mapper接口&#xff1a; List<UserInfo> queryUserPage(Param(“vo”) UserQury query,Page<UserInfo> page); UserQury 类中的状态字段&#xff1a; ApiModelproperty(“状态”) private String status; Xml中sql如下&#xff1…

动态规划之背包问题

0/1背包问题 1.二维数组解法 题目描述&#xff1a;有一个容量为m的背包&#xff0c;还有n个物品&#xff0c;他们的重量分别为w1、w2、w3.....wn&#xff0c;他们的价值分别为v1、v2、v3......vn。每个物品只能使用一次&#xff0c;求可以放进背包物品的最大价值。 输入样例…

蓝桥杯模拟题不知名题目

题目:p是一个质数&#xff0c;但p是n的约数。将p称为是n的质因数。求2024最大质因数。 #include<iostream> #include<algorithm> using namespace std; bool fun(int x) {for(int i 2 ; i * i < x ; i){if(x % i 0)return false;}return true; } int main() …

JavaFX 表格组件详解及案例

1. 表格组件简介 TableView&#xff1a;用于显示数据的二维表格&#xff0c;支持列排序、选择、编辑等功能。TreeTableView&#xff1a;类似于 TableView&#xff0c;但支持分层数据展示&#xff0c;适合树形结构的数据。 2. TableView 的常用方法 2.1 构造方法 TableView()…

cocoscreater3.8.4生成图集并使用

1.安装texturepacker&#xff0c;去官网下载https://www.codeandweb.com/texturepacker 2.将图片拖动进来&#xff0c;即可自动生成精灵表&#xff0c;这里输出选用cocos2d-x&#xff0c;打包用免费版的“基本”就行&#xff0c;高级模式是收费的&#xff0c;然后点击“发布精…