HarmonyOS 鸿蒙Next中删除用户公共目录的图片

HarmonyOS 鸿蒙Next中删除用户公共目录的图片 如题,删除用户公共目录的图片有什么方法吗?有示例吗?

3 回复

【解决方案】

申请READ_IMAGEVIDEO权限后使用Picker选择器获取到文件。应用拉起系统Picker组件(文件选择器、照片选择器、联系人选择器等),由用户在Picker上选择对应的文件、照片资源,应用即可获取到Picker的返回结果。

let uris: Array<string> = [];
const photoViewPicker = new photoAccessHelper.PhotoViewPicker();
photoViewPicker.select(photoSelectOptions).then((photoSelectResult: photoAccessHelper.PhotoSelectResult) => {
  uris = photoSelectResult.photoUris;
  console.info(`photoViewPicker.select to file succeed and uris are:` + uris);
}).catch((err: BusinessError) => {
  console.error(`Invoke photoViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})

创建文件选择器DocumentViewPicker实例。调用select()接口拉起FilePicker应用界面进行文件选择。

let uris: string[] = [];
// 请在组件内获取context,确保this.getUIContext().getHostContext()返回结果为UIAbilityContext
let context = this.getUIContext().getHostContext() as common.UIAbilityContext; 
// 创建文件选择器实例
const documentViewPicker = new picker.DocumentViewPicker(context);
documentViewPicker.select(documentSelectOptions).then((documentSelectResult: Array<string>) => {
  // 文件选择成功后,返回被选中文档的URI结果集。
  uris = documentSelectResult;
  console.info(`documentViewPicker.select to file succeed and uris are:` + uris);
}).catch((err: BusinessError) => {
  console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`);
})

将URI传入fileManagerService.deleteToTrash。

async function deleteFile() {
  let targetUri: string = "file://docs/storage/Users/currentUser/Download/1.txt";
  try {
    let trashUri: string = await fileManagerService.deleteToTrash(targetUri);
    console.info(`trashUri: ` + trashUri);
  } catch (err) {
    let error: BusinessError = err as BusinessError;
    console.error(`delete failed, errCode:` + error.code + `, errMessage:` + error.message);
  }
}

更多关于HarmonyOS 鸿蒙Next中删除用户公共目录的图片的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next中,删除用户公共目录的图片需使用鸿蒙的媒体库管理API。通过photoAccessHelper模块的getAssets接口获取图片资源,调用delete方法执行删除操作。删除前需申请ohos.permission.READ_IMAGEVIDEOohos.permission.WRITE_IMAGEVIDEO权限。具体实现涉及使用PhotoAsset对象定位目标文件并执行删除。

在HarmonyOS Next中,可以通过用户文件访问框架(User File Access Framework)删除公共目录中的图片。以下是使用MediaLibrary进行删除的示例:

import mediaLibrary from '@ohos.multimedia.mediaLibrary';

// 获取媒体库实例
const context = getContext(this) as common.UIAbilityContext;
let media = mediaLibrary.getMediaLibrary(context);

// 查询要删除的图片文件
let fileKeyObj = mediaLibrary.FileKey;
let fetchOp = {
  selections: `${fileKeyObj.DISPLAY_NAME}=?`,  // 根据文件名匹配
  selectionArgs: ['example.jpg'],  // 要删除的文件名
};

// 执行查询
const fetchFileResult = await media.getFileAssets(fetchOp);
let fileAsset = await fetchFileResult.getFirstObject();

if (fileAsset) {
  // 删除文件
  let deleteResult = await media.deleteAsset(fileAsset.uri);
  console.log(`删除结果: ${deleteResult}`);
} else {
  console.log('未找到指定文件');
}

关键步骤:

  1. 获取MediaLibrary实例
  2. 构建查询条件定位目标文件
  3. 通过deleteAsset()方法删除文件
  4. 需要ohos.permission.READ_MEDIA和ohos.permission.WRITE_MEDIA权限

注意:删除操作不可逆,建议在执行前先确认文件信息,并做好错误处理。

回到顶部