定位权限未开通能区分场景吗?

用户首次申请定位权限的时候会弹出系统弹窗,如果用户点拒绝开通后权限状态GrantStatus会返回-1。如果手动在设置中禁止定位权限后,用户请求定位权限的时候系统不会弹窗。返回的GrantStatus也是-1。两种情况能返回不同的值做区分吗。前一种情况我们只用系统弹窗就可以了。后一种情况我们需要自定义弹窗,提示用户去设置中打开定位。但现在存在一个问题。如果用户在系统弹窗中拒绝开通位置权限后,会出现我们又弹出自定义弹窗的情况。

我们希望的效果是系统弹窗和引导弹窗我们只显示一个。用户定位权限未开通分两种情况

1、当次弹出系统弹窗,用户选择拒绝后,该流程结束。

2、当次未弹出系统弹窗,弹出我们自定义的引导弹窗。

这两种情况虽然都是用户无权限,希望返回的Status不要是同一个值,否则无法区分。

HarmonyOS
2024-09-10 11:24:50
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

GrantStatus暂不支持判断是否为首次拒绝,目前针对这种场景的最佳实践为使用用户首选项(Preference)持久化用户拒绝行为。

流程为:

1.调用checkAccessToken()方法来校验当前是否已经授权。

2.

是:应用启动。

否:通过查询首选项用户是否拒绝过权限。

3.

是:弹出引导弹窗,引导用户到设置页主动开启权限。

否:弹出了系统授权窗。

4.

用户授权:应用启动。

用户拒绝:首选项保存用户拒绝过权限。

分享
微博
QQ
微信
回复
2024-09-10 17:35:04
相关问题
HarmonyOS部分场景下expandSafeArea不生效
1041浏览 • 1回复 待解决
HarmonyOS定位权限问题
428浏览 • 1回复 待解决
获取定位权限没有弹框
1927浏览 • 1回复 待解决
HAR和HSP的使用场景区分
423浏览 • 1回复 待解决
场景化控件中无法获取到定位信息
1840浏览 • 1回复 待解决
地图服务开通后多久生效?
345浏览 • 1回复 待解决
SnapShot定位,有人知道怎么处理
992浏览 • 1回复 待解决
ets组件定位问题有知道的?
3003浏览 • 1回复 待解决
权限使用方式中ACL使具体指什么
1826浏览 • 1回复 待解决