HarmonyOS 鸿蒙Next非系统应用是否无权读取相册图片?使用filePicker仅能选择本地沙盒目录图片

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

HarmonyOS 鸿蒙Next非系统应用是否无权读取相册图片?使用filePicker仅能选择本地沙盒目录图片 非系统应用是不是没有权限去读取相册里面的图片?我用filePicker好像只能选到本地沙盒目录里面的图片

我应该用哪个api选择才能读取到相册里面的图片

2 回复

该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,

回到顶部