HarmonyOS 鸿蒙Next 调用screenshot.pick()截屏报错801

HarmonyOS 鸿蒙Next 调用screenshot.pick()截屏报错801

调用screenshot.pick()截屏报错801。

2 回复

可以参考如下代码:

 import { photoAccessHelper } from '[@kit](/user/kit).MediaLibraryKit';
import { BusinessError } from '[@kit](/user/kit).BasicServicesKit';
import { image } from '[@kit](/user/kit).ImageKit';
import { window } from '[@kit](/user/kit).ArkUI';
import fs from '[@ohos](/user/ohos).file.fs';


[@Entry](/user/Entry)
[@Component](/user/Component)
struct SavePixelMapToAlbum {
  [@State](/user/State) saveButtonOptions: SaveButtonOptions = {
    icon: SaveIconStyle.FULL_FILLED,
    text: SaveDescription.SAVE,
    buttonType: ButtonType.Capsule
  };

  private context: Context = getContext(this);
  private windowClass = AppStorage.get("windowClass") as window.Window





  build() {
    Row() {
      Column() {
        Image($r('app.media.app_icon'))
          .objectFit(ImageFit.None)
          .height('30%')

        SaveButton(this.saveButtonOptions)
          .onClick(async (event, result: SaveButtonOnClickResult) => {
            if (result === SaveButtonOnClickResult.SUCCESS) {

              let promise = this.windowClass.snapshot();
              promise.then(async (pixelMap: image.PixelMap) => {
                let helper = photoAccessHelper.getPhotoAccessHelper(this.context);
                let uri = await helper.createAsset(photoAccessHelper.PhotoType.IMAGE, 'jpeg');

                let file: fs.File = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
                const imagePacker = image.createImagePacker();
                const imageBuffer = await imagePacker.packing(pixelMap, {
                  format: 'image/png',
                  quality: 100
                });
                await fs.write(file.fd, imageBuffer);
                fs.closeSync(file);
                pixelMap.release();


              }).catch((err: BusinessError) => {
                console.error(`Failed to snapshot window. Cause code: ${err.code}, message: ${err.message}`);

              });
            }
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 调用screenshot.pick()截屏报错801的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,调用screenshot.pick()方法截屏时遇到错误码801,通常表明权限或安全策略阻止了截屏操作。

错误码801一般与权限设置有关,确保你的应用已正确声明并获取了必要的权限。对于截屏功能,应用需要获得“截屏权限”(ohos.permission.CAPTURE_SCREEN)。检查应用的config.json文件,确认是否已包含该权限声明:

"module": {
    "package": "your.package.name",
    "reqPermissions": [
        "ohos.permission.CAPTURE_SCREEN"
    ]
}

同时,确保在运行时向用户请求并获得了该权限。若应用已声明并请求了权限,但问题依旧存在,考虑以下可能原因:

  • 系统安全策略可能限制了某些类型的应用或特定场景下的截屏操作。
  • 应用是否在受信任的应用列表中,某些安全设置可能要求应用被用户明确信任才能进行截屏。

请检查上述配置及系统设置,确保一切设置正确无误。

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

回到顶部