智能客服
你问我答,随时在线为你解决问题

























通过atManager.checkAccessTokenSync获取权限的授权状态时,只有PERMISSION_DENIED(未授权)和PERMISSION_GRANTED(已授权)两种状态,怎么判断当前权限是否为首次申请?

可用atManager.requestPermissionsFromUser拉起弹框请求用户授权,返回类型为:PermissionRequestResult,如果dialogShownResults为true,则代表为首次弹窗请求授权。
以申请ohos.permission.CAMERA为例:
- export function checkPermission(context: Context) {
- const PERMISSION_ARRAY: Permissions[] = ['ohos.permission.CAMERA'];
- const atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
- atManager.requestPermissionsFromUser(context, PERMISSION_ARRAY).then((data) => {
- if (data.authResults[0] === 0) {
- // 已授权
- console.info('request permission success.')
- return;
- }
- if (data.dialogShownResults && data.dialogShownResults.length > 0 && data.dialogShownResults[0]) {
- // 首次权限申请
- console.info('request permission first.')
- } else {
- // 如果是未授权状态,可通过requestPermissionOnSetting拉起系统设置半模态二次授权
- atManager.requestPermissionOnSetting(context, PERMISSION_ARRAY)
- .then((data: Array<abilityAccessCtrl.GrantStatus>) => {
- console.info('data:' + JSON.stringify(data));
- })
- .catch((err: BusinessError) => {
- console.error('data:' + JSON.stringify(err));
- });
- }
- })
- }
智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功