删除图库图片?

功能场景描述及使用场景

创建一个弹出框来删除照片,删除的文件进入到回收站

阅读 555
1 个回答

使用的核心API

import photoAccessHelper from '@ohos.file.photoAccessHelper';

核心代码解释

import abilityAccessCtrl, { PermissionRequestResult } from '@ohos.abilityAccessCtrl';
import { BusinessError } from '@ohos.base';
import dataSharePredicates from '@ohos.data.dataSharePredicates';
import photoAccessHelper from '@ohos.file.photoAccessHelper';
 
async function myCreateDeleteRequest(context: Context) {
  let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates();
  // predicates.equalTo(photoKey, value);
  let fetchOptions: photoAccessHelper.FetchOptions = {
    fetchColumns: [],
    predicates: predicates
  };
  let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context);
  phAccessHelper.getAssets(fetchOptions)
    .then((result: photoAccessHelper.FetchResult<photoAccessHelper.PhotoAsset>) => {
      let asset = result.getAllObjects();
      result.close();
      return asset;
    })
    .then((array: Array<photoAccessHelper.PhotoAsset>) => {
      let uriList: Array<string> = [];
      for (let index = 0; index < array.length; index++) {
        const asset = array[index];
        uriList.push(asset.uri);
      }
      console.info(`MediaAlbum deleteAssets uriList is ${JSON.stringify(uriList)}`)
      return phAccessHelper.createDeleteRequest(uriList)
    })
    .catch((error: BusinessError) => {
      return Promise.reject(error);
    })
}
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
 
  async aboutToAppear() {
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
    try {
      let context: Context = getContext()
      atManager.requestPermissionsFromUser(context, ['ohos.permission.READ_IMAGEVIDEO',"ohos.permission.WRITE_IMAGEVIDEO"], (err: BusinessError, data: PermissionRequestResult) => {
        console.info('data:' + JSON.stringify(data));
        console.info('data permissions:' + data.permissions);
        console.info('data authResults:' + data.authResults);
      });
    } catch (err) {
      console.log(`catch err->${JSON.stringify(err)}`);
    }
 
 
 
 
  }
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
        Button("按钮")
          .onClick(()=>{
            let context=getContext()
            myCreateDeleteRequest(context)
          })
      }
 
      .width('100%')
    }
    .height('100%')
  }
}

注明适配的版本信息

本示例为Stage模型,支持API version 10。

本示例需要使用DevEco Studio 4.0 Release版本进行编译运行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进