HarmonyOS 如何区分定位获取失败具体原因

如何区分定位获取失败具体原因,能否区分用户对于定位权限是否授权、系统定位开关是否开启等不同场景

比如用户授予定位权限后,在使用时关闭了系统定位开关,程序在获取定位时会失败,这时如何区分定位权限是为授权或者是取消授权,还是用户关闭了系统定位开关。我们希望能够区分不同场景以做出不同的提示。

HarmonyOS
2024-08-28 14:19:39
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

目前只能判断定位权限是否授权。无法区分是否是用户主动关闭了系统定位。

// 校验应用是否被授予定位权限,可以通过调用checkAccessToken()方法来校验当前是否已经授权。 
async checkPermissions(): Promise<boolean> { 
  const permissions: Array<Permissions> = ['ohos.permission.LOCATION', 'ohos.permission.APPROXIMATELY_LOCATION']; 
  for (let permission of permissions) { 
  let grantStatus: abilityAccessCtrl.GrantStatus = await this.checkAccessToken(permission); 
  if (grantStatus === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED) { 
  return true; 
} 
} 
return false; 
} 
 
async checkAccessToken(permission: Permissions): Promise<abilityAccessCtrl.GrantStatus> { 
  let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager(); 
  let grantStatus: abilityAccessCtrl.GrantStatus = abilityAccessCtrl.GrantStatus.PERMISSION_DENIED; 
 
  // 获取应用程序的accessTokenID 
  let tokenId: number = 0; 
  try { 
  let bundleInfo: bundleManager.BundleInfo = await bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION); 
  let appInfo: bundleManager.ApplicationInfo = bundleInfo.appInfo; 
  tokenId = appInfo.accessTokenId; 
} catch (error) { 
  let err: BusinessError = error as BusinessError; 
  console.error(`Failed to get bundle info for self. Code is ${err.code}, message is ${err.message}`); 
} 
 
// 校验应用是否被授予权限 
try { 
  grantStatus = await atManager.checkAccessToken(tokenId, permission); 
} catch (error) { 
  let err: BusinessError = error as BusinessError; 
  console.error(`Failed to check access token. Code is ${err.code}, message is ${err.message}`); 
} 
 
return grantStatus; 
}

开发者可以自己本地在申请权限的时候记录授权或取消授权的状态值,通过首选项记录例如,1和2其余的情况均属于用户主动关闭了系统定位。

分享
微博
QQ
微信
回复
2024-08-28 20:23:45
相关问题
精度优先获取定位失败
1642浏览 • 1回复 待解决
startAbility调用失败如何定位
713浏览 • 1回复 待解决
定位权限未开通能区分场景吗?
305浏览 • 1回复 待解决
地图定位不准,是什么原因啊?
211浏览 • 1回复 待解决
hi3861编译失败原因
11240浏览 • 2回复 待解决
HarmonyOS获取NativeXcomponent失败
319浏览 • 1回复 待解决
HarmonyOS 获取当前定位不准确
175浏览 • 1回复 待解决
求告知如何获取当前定位
372浏览 • 1回复 待解决
HarmonyOS 主动获取焦点失败
222浏览 • 1回复 待解决
HarmonyOS PUSH 获取id失败
255浏览 • 1回复 待解决
HarmonyOS identifier.getOAID 获取失败
173浏览 • 1回复 待解决
获取定位信息是否必须联网
1467浏览 • 1回复 待解决
获取定位权限没有弹框
1778浏览 • 1回复 待解决
HarmonyOS photoAsset获取图片宽高失败
259浏览 • 1回复 待解决
HarmonyOS 获取应用级access token失败
299浏览 • 1回复 待解决
HarmonyOS蓝牙连接后获取GATT服务失败
558浏览 • 1回复 待解决
单击和双击事件如何区分
382浏览 • 1回复 待解决
HarmonyOS 怎么区分debug和release
491浏览 • 1回复 待解决
HarmonyOS crash日志如何定位问题代码
425浏览 • 1回复 待解决
消息推送获取token失败
1049浏览 • 1回复 待解决