电子说
位置控件使用直观且易懂的通用标识,让用户明确地知道这是一个获取位置信息的按钮。这满足了授权场景需要匹配用户真实意图的需求。只有当用户主观愿意,并且明确了解使用场景后点击位置控件,应用才会获得临时的授权,获取位置信息并完成相应的服务功能。
一旦应用集成了位置控件,用户点击该控件后,无论应用是否已经申请过或被授予精准定位权限,都会在本次前台期间获得精准定位的授权,可以调用位置服务获取精准定位。
对于不是强位置关联应用(例如导航、运动健康等)的应用,只在部分前台场景需要使用位置信息(例如定位城市、打卡、分享位置等)。如果需要长时间使用或是在后台使用位置信息,建议申请位置权限。
位置控件效果如图所示。
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]以在聊天界面发送实时定位信息为例。在当前场景下,应用仅需要在前台期间,短暂地访问当前位置,不需要长时间使用。此时,可以直接使用安全控件中的位置控件,免去权限申请和权限请求等环节,获得临时授权,满足权限最小化,提升用户的隐私体验。
参考以下步骤,实现效果:点击控件“当前位置”获取临时精准定位授权,获取授权后,弹窗提示具体位置信息,效果图请见上文。
import { geoLocationManager } from '@kit.LocationKit';
HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿
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
};
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}`);
});
}
@Entry
@Component
struct Index {
build() {
Row() {
Column({ space: 10 }) {
LocationButton({
icon: LocationIconStyle.LINES,
text: LocationDescription.CURRENT_LOCATION,
buttonType: ButtonType.Normal
})
.onClick((event: ClickEvent, result: LocationButtonOnClickResult) = > {
if (result === LocationButtonOnClickResult.SUCCESS) {
// 免去权限申请和权限请求等环节,获得临时授权,获取位置信息授权
getCurrentLocationInfo();
} else {
promptAction.showToast({ message: '获取位置信息失败!' })
}
})
}
.width('100%')
}
.height('100%')
.backgroundColor(0xF1F3F5)
}
}
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !