HarmonyOS 鸿蒙Next 配置权限ohos.permission.WRITE_IMAGEVIDEO,签名不通过

发布于 1周前 作者 itying888 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 配置权限ohos.permission.WRITE_IMAGEVIDEO,签名不通过

在entry->src->main->module.json5中requestPermissions配置权限ohos.permission.WRITE_IMAGEVIDEO,报错:install failed due to grant request permissions failed.  通过查看文档是应用等级为normal,需申请进入白名单,请问如何操作?

3 回复

 相册权限需要申请ohos.permission.READ_IMAGEVIDEO

只需要做以下操作:

1. 申请ACL权限,白名单

参考使用ACL的签名配置指导完成ACL提权。参考链接;

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-V5#section157591551175916

2. 鸿蒙里面需要添加权限:ohos.permission.READ_IMAGEVIDEO,ohos.permission.WRITE_IMAGEVIDEO

但是目前权限很难申请 你用的写入相册的能力可以使用saveButton安全控件的能力实现

安全控件demo

import { photoAccessHelper } from '@kit.MediaLibraryKit';

import { fileIo } from '@kit.CoreFileKit';

import { common } from '@kit.AbilityKit';

import { promptAction } from '@kit.ArkUI';

import { BusinessError } from '@kit.BasicServicesKit';

async function savePhotoToGallery(context: common.UIAbilityContext) {

  let helper = photoAccessHelper.getPhotoAccessHelper(context);

  try {

    // onClick触发后5秒内通过createAsset接口创建图片文件,5秒后createAsset权限收回。

    let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpg');

    // 使用uri打开文件,可以持续写入内容,写入过程不受时间限制

    let file = await fileIo.open(uri, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);

    // $r('app.media.startIcon')需要替换为所需的图像资源文件

    context.resourceManager.getMediaContent($r('app.media.startIcon').id, 0)

      .then(async value => {

        let media = value.buffer;

        // 写到媒体库文件中

        await fileIo.write(file.fd, media);

        await fileIo.close(file.fd);

        promptAction.showToast({ message: '已保存至相册!' });

      });

  }

  catch (error) {

    const err: BusinessError = error as BusinessError;

    console.error(`Failed to save photo. Code is ${err.code}, message is ${err.message}`);

  }

}

@Entry

@Component

struct Index {

  build() {

    Row() {

      Column({ space: 10 }) {

        // $r('app.media.startIcon')需要替换为所需的图像资源文件

        Image($r('app.media.startIcon'))

          .height(400)

          .width('100%')

        SaveButton()

          .padding({top: 12, bottom: 12, left: 24, right: 24})

          .onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {

            if (result === SaveButtonOnClickResult.SUCCESS) {

              const context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;

              // 免去权限申请和权限请求等环节,获得临时授权,保存对应图片

              savePhotoToGallery(context);

            } else {

              promptAction.showToast({ message: '设置权限失败!' })

            }

          })

      }

      .width('100%')

    }

    .height('100%')

    .backgroundColor(0xF1F3F5)

  }

}

参考指南: 【 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/savebutton-V5

重新生成测试的签名, 就可以了. 
但是如果真的使用了这个权限,  app上架审核会非常严格, 建议如果能不用最好不用.

针对您提到的HarmonyOS鸿蒙Next配置权限ohos.permission.WRITE_IMAGEVIDEO签名不通过的问题,这通常与应用的签名配置、权限声明或系统安全策略有关。以下是一些可能的检查点:

  1. 签名证书:确保您的应用使用了正确的签名证书,并且该证书未过期或被撤销。签名证书必须与您在华为开发者平台上注册的一致。

  2. 权限声明:在config.json文件中正确声明ohos.permission.WRITE_IMAGEVIDEO权限。确保权限声明的格式正确,无语法错误。

  3. 系统安全策略:某些情况下,系统可能基于安全策略限制特定权限的使用。检查鸿蒙系统的版本和更新日志,确认是否有相关变更。

  4. 应用兼容性:确保您的应用与鸿蒙系统的版本兼容。某些权限可能在旧版本中不受支持。

  5. 重新打包与签名:尝试重新打包应用并签名,确保所有步骤正确无误。

如果经过上述检查后问题依旧无法解决,可能是更深层次的系统或配置问题。此时,建议您直接联系华为开发者支持或访问官网客服。官网地址是:https://www.itying.com/category-93-b0.html ,他们将提供更专业的帮助。

回到顶部