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
相关问题
精度优先获取定位失败
1751浏览 • 1回复 待解决
startAbility调用失败如何定位
812浏览 • 1回复 待解决
定位权限未开通能区分场景吗?
419浏览 • 1回复 待解决
地图定位不准,是什么原因啊?
323浏览 • 1回复 待解决
hi3861编译失败原因
11435浏览 • 2回复 待解决
求告知如何获取当前定位
471浏览 • 1回复 待解决
HarmonyOS获取NativeXcomponent失败
453浏览 • 1回复 待解决
HarmonyOS 获取当前定位不准确
473浏览 • 1回复 待解决
HarmonyOS 获取媒体文件的具体路径
48浏览 • 1回复 待解决
获取定位信息是否必须联网
1565浏览 • 1回复 待解决
获取定位权限没有弹框
1944浏览 • 1回复 待解决
HarmonyOS获取签名信息获取失败
57浏览 • 1回复 待解决
HarmonyOS OAID获取失败
30浏览 • 2回复 待解决
HarmonyOS webview浏览器获取定位异常
90浏览 • 1回复 待解决
HarmonyOS identifier.getOAID 获取失败
370浏览 • 1回复 待解决