HarmonyOS 鸿蒙Next 相册权限怎么添加,一直报错13900012

HarmonyOS 鸿蒙Next 相册权限怎么添加,一直报错13900012

保存图片到相册,一直报错13900012,权限失败。

2 回复

你是不是使用了需要申请ACL权限的那个保存图片的接口?

相册权限属于受限权限,需要申请使用,看下这个:
关于权限如何申请:‘https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/declare-permissions-in-acl-V5
关于调试时自动签名和手动签名ACL权限使用:
自动:‘https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-0000001587684945-V5#section9786111152213
手动:‘https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-signing-0000001587684945-V5#section157591551175916

也可以使用安全控件来保存图片,这个不需要申请acl权限:

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); context.resourceManager.getMediaContent($r(‘app.media.app_icon’).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 }) { Image($r(‘app.media.app_icon’)) .height(400) .width(‘100%’)

    SaveButton().onClick(async (event: ClickEvent, result: SaveButtonOnClickResult) => {
      <span class="hljs-keyword">if</span> (result === SaveButtonOnClickResult.SUCCESS) {
        <span class="hljs-keyword">const</span> context: common.UIAbilityContext = getContext(<span class="hljs-keyword">this</span>) as common.UIAbilityContext;
        <span class="hljs-comment">// 免去权限申请和权限请求等环节,获得临时授权,保存对应图片</span>
        savePhotoToGallery(context);
      } <span class="hljs-keyword">else</span> {
        promptAction.showToast({ message: <span class="hljs-string">'设置权限失败!'</span> })
      }
    })
  }
  .width(<span class="hljs-string">'100%'</span>)
}
.height(<span class="hljs-string">'100%'</span>)
.backgroundColor(<span class="hljs-number">0xF1F3F5</span>)

} }

更多关于HarmonyOS 鸿蒙Next 相册权限怎么添加,一直报错13900012的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS 鸿蒙Next相册权限添加报错13900012的问题,以下是一些可能的解决方案:

  1. 检查权限声明

    • 确保在应用的配置文件中(如config.jsonmodule.json5)正确声明了相册访问权限,如ohos.permission.READ_IMAGEVIDEOohos.permission.READ_MEDIAohos.permission.WRITE_MEDIA
    • 对于需要用户授权的权限,还需添加“reason”和“usedScene”属性,明确申请权限的原因和使用场景。
  2. 动态申请权限

    • 鸿蒙系统要求敏感权限在运行时动态申请,请确保在代码中正确调用requestPermissionsFromUser方法请求权限,并处理用户的授权结果。
  3. 检查代码实现

    • 权限报错可能是由于代码实现不当导致的,请检查代码中是否有权限使用不当或未正确处理权限申请结果的情况。
  4. 查阅官方文档

    • 鸿蒙系统的权限管理机制可能有所更新,建议查阅最新的官方文档,了解权限管理的最新要求和最佳实践。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部