HarmonyOS 鸿蒙Next非系统应用是否无权读取相册图片?使用filePicker仅能选择本地沙盒目录图片
HarmonyOS 鸿蒙Next非系统应用是否无权读取相册图片?使用filePicker仅能选择本地沙盒目录图片 非系统应用是不是没有权限去读取相册里面的图片?我用filePicker好像只能选到本地沙盒目录里面的图片
我应该用哪个api选择才能读取到相册里面的图片
该demo可以读取到相册的图片并转化为解码成PixelMap,你看是否满足需求
import photoAccessHelper from '@ohos.file.photoAccessHelper';
import image from '@ohos.multimedia.image';
import fs from '@ohos.file.fs';
@Entry
@Component
struct Photo {
@State message: string = 'Hello World';
@State getAlbum: string = '显示相册中的图片';
@State pixel: image.PixelMap | undefined = undefined;
@State albumPath: string = '';
@State photoSize: number = 0;
async getPictureFromAlbum(){
let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
PhotoSelectOptions.maxSelectNumber = 1;
let photoPicker = new photoAccessHelper.PhotoViewPicker();
let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(PhotoSelectOptions);
this.albumPath = photoSelectResult.photoUris[0]; // 读取图片为buffer
const file = fs.openSync(this.albumPath, fs.OpenMode.READ_WRITE);
this.photoSize = fs.statSync(file.fd).size; console.info('Photo Size: ' + this.photoSize);
let buffer = new ArrayBuffer(this.photoSize);
fs.readSync(file.fd, buffer);
fs.closeSync(file); // 解码成PixelMap
const imageSource = image.createImageSource(buffer);
console.log('imageSource: ' + JSON.stringify(imageSource));
this.pixel = await imageSource.createPixelMap({});
}
build() {
RelativeContainer() {
Text(this.message)
.id('PhotoHelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
Button('xxx').onClick(() =>{
this.getPictureFromAlbum()
})
}
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS 鸿蒙Next非系统应用是否无权读取相册图片?使用filePicker仅能选择本地沙盒目录图片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HarmonyOS 鸿蒙Next非系统应用无权直接读取相册图片。
在HarmonyOS系统中,出于隐私保护和用户数据安全的考虑,非系统应用通常被限制直接访问设备的敏感数据,包括相册中的图片。这种设计旨在防止应用未经用户允许就擅自获取用户的私人信息。
对于非系统应用来说,如果需要让用户选择图片进行上传或处理,通常需要通过系统提供的文件选择器(如filePicker)来实现。而filePicker在HarmonyOS中的行为被设计为仅允许用户从本地沙盒目录中选择图片,这是因为沙盒目录是应用自己的私有存储空间,其中的数据只能被该应用访问,确保了数据的安全性和隔离性。
因此,如果非系统应用尝试直接读取相册中的图片,而未经用户通过filePicker等系统组件明确授权,这样的操作将会被系统阻止,以确保用户的隐私和数据安全。
如果开发者需要在自己的HarmonyOS应用中实现图片选择功能,应遵循系统提供的API和组件规范,通过filePicker等合法途径引导用户选择图片。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,