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