From e8cd4cf95ea475d556d8fcd2f86be8e52ed4444d Mon Sep 17 00:00:00 2001 From: zgf Date: Thu, 27 Jun 2024 09:51:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AA=92=E4=BD=93url=E6=A0=B7=E4=BE=8B?= =?UTF-8?q?=E6=94=B9=E7=94=A8photoAccessHelper=E6=8E=A5=E5=8F=A3=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=9C=AC=E5=9C=B0=E5=9B=BE=E7=89=87=E8=B5=84=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zgf --- .../main/ets/entryability/EntryAbility.ets | 2 +- .../main/ets/pages/dataShareUriLoadPage.ets | 69 ++++++------------- entry/src/main/module.json5 | 8 +-- .../main/resources/base/element/string.json | 8 +-- .../main/resources/en_US/element/string.json | 8 +-- .../main/resources/zh_CN/element/string.json | 8 +-- 6 files changed, 37 insertions(+), 66 deletions(-) diff --git a/entry/src/main/ets/entryability/EntryAbility.ets b/entry/src/main/ets/entryability/EntryAbility.ets index 82d037f..eac694c 100644 --- a/entry/src/main/ets/entryability/EntryAbility.ets +++ b/entry/src/main/ets/entryability/EntryAbility.ets @@ -33,7 +33,7 @@ export default class EntryAbility extends UIAbility { async onWindowStageCreate(windowStage: window.WindowStage): Promise { // Main window is created, set main page for this ability - let list: Array = ['ohos.permission.MEDIA_LOCATION', 'ohos.permission.READ_MEDIA']; + let list: Array = ['ohos.permission.READ_IMAGEVIDEO', 'ohos.permission.WRITE_IMAGEVIDEO']; let permissionRequestResult: Object; let atManager = abilityAccessCtrl.createAtManager(); atManager.requestPermissionsFromUser(this.context, list, (err: BusinessError, result: Object) => { diff --git a/entry/src/main/ets/pages/dataShareUriLoadPage.ets b/entry/src/main/ets/pages/dataShareUriLoadPage.ets index 93f5aa3..4627686 100644 --- a/entry/src/main/ets/pages/dataShareUriLoadPage.ets +++ b/entry/src/main/ets/pages/dataShareUriLoadPage.ets @@ -12,8 +12,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import mediaLibrary from '@ohos.multimedia.mediaLibrary'; import { ImageKnifeComponent, ImageKnifeOption } from '@ohos/libraryimageknife' +import { dataSharePredicates } from '@kit.ArkData'; +import { photoAccessHelper } from '@kit.MediaLibraryKit'; @Entry @@ -34,56 +35,26 @@ struct DataShareUriLoadPage { Text("获取媒体图库的uri用ImageKnife展示").fontSize(15) Flex({ direction: FlexDirection.Row, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { Button("点击加载Uri并展示") - .onClick(() => { - // 获取mediaLibrary实例,后续用到此实例均采用此处获取的实例 - const context = getContext(this); - let media = mediaLibrary.getMediaLibrary(context); - - let imageType = mediaLibrary.MediaType.IMAGE; - // 创建文件获取选项,此处参数为获取image类型的文件资源 - let imagesFetchOp:mediaLibrary.MediaFetchOptions = { - selections: mediaLibrary.FileKey.MEDIA_TYPE + '= ?', - selectionArgs: [imageType.toString()], - }; - // 获取文件资源,使用callback方式返回异步结果 - media.getFileAssets(imagesFetchOp, (error, fetchFileResult) => { - // 判断获取的文件资源的检索结果集是否为undefined,若为undefined则接口调用失败 - if (fetchFileResult == undefined) { - console.log('get fetchFileResult failed with error: ' + error); - return; - } - // 获取文件检索结果集中的总数 - const count = fetchFileResult.getCount(); - // 判断结果集中的数量是否小于0,小于0时表示接口调用失败 - if (count < 0) { - console.log('get count from fetchFileResult failed, count: ' + count); - return; - } - // 判断结果集中的数量是否等于0,等于0时表示接口调用成功,但是检索结果集为空,请检查文件获取选项参数配置是否有误和设备中是否存在相应文件 - if (count == 0) { - console.log('The count of fetchFileResult is zero'); - return; - } - console.log('Get fetchFileResult successfully, count: ' + count); - // 获取文件检索结果集中的第一个资源,使用callback方式返回异步结果 - fetchFileResult.getFirstObject((error, fileAsset) => { - // 检查获取的第一个资源是否为undefined,若为undefined则接口调用失败 - if (fileAsset == undefined) { - console.log('get first object failed with error: ' + error); - return; - } - console.log("fileAsset id=" + fileAsset.id + " fileAsset uri=" + fileAsset.uri + " fileAsset displayName=" + fileAsset.displayName) - - // 加载图库第一张图片的uri + .onClick(async () => { + const context = getContext(this) + let phAccessHelper = photoAccessHelper.getPhotoAccessHelper(context) + let predicates: dataSharePredicates.DataSharePredicates = new dataSharePredicates.DataSharePredicates + let fetchOptions: photoAccessHelper.FetchOptions = { + fetchColumns:[], + predicates:predicates + } + let fetchResult = await phAccessHelper.getAssets(fetchOptions) + if(fetchResult != undefined) { + console.info("fetchResult success") + let photoAsset: photoAccessHelper.PhotoAsset = await fetchResult.getFirstObject() + if(photoAsset != undefined) { + console.info("photoAsset.displayName :"+photoAsset.displayName) this.imageKnifeOption1 = { - loadSrc: fileAsset.uri, - placeholderSrc: $r('app.media.loading'), - errorholderSrc: $r('app.media.failed') + loadSrc: photoAsset.uri, + placeholderSrc:$r('app.media.loading') } - // 释放FetchFileResult实例并使其失效。无法调用其他方法 - fetchFileResult.close(); - }); - }); + } + } }).margin({ top: 5, left: 3 }) ImageKnifeComponent({ imageKnifeOption: this.imageKnifeOption1 }).width(300).height(300) }.width('100%').backgroundColor(Color.Pink) diff --git a/entry/src/main/module.json5 b/entry/src/main/module.json5 index e5aff0d..e9c6f3e 100644 --- a/entry/src/main/module.json5 +++ b/entry/src/main/module.json5 @@ -45,8 +45,8 @@ } }, { - "name": "ohos.permission.MEDIA_LOCATION", - "reason":"$string:app_permission_MEDIA_LOCATION", + "name": "ohos.permission.WRITE_IMAGEVIDEO", + "reason":"$string:app_permission_WRITE_IMAGEVIDEO", "usedScene": { "abilities": [ "EntryAbility" @@ -55,8 +55,8 @@ } }, { - "name": "ohos.permission.READ_MEDIA", - "reason": "$string:app_permission_MEDIA_LOCATION", + "name": "ohos.permission.READ_IMAGEVIDEO", + "reason": "$string:app_permission_READ_IMAGEVIDEO", "usedScene": { "abilities": [ "EntryAbility" diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json index 9d7e8dd..13c1fec 100644 --- a/entry/src/main/resources/base/element/string.json +++ b/entry/src/main/resources/base/element/string.json @@ -13,12 +13,12 @@ "value": "label" }, { - "name": "app_permission_MEDIA_LOCATION", - "value": "获取媒体图片" + "name": "app_permission_WRITE_IMAGEVIDEO", + "value": "获取写入媒体资源权限" }, { - "name": "app_permission_READ_MEDIA", - "value": "读媒体图片" + "name": "app_permission_READ_IMAGEVIDEO", + "value": "获取读媒体资源权限" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/en_US/element/string.json b/entry/src/main/resources/en_US/element/string.json index 9d7e8dd..13c1fec 100644 --- a/entry/src/main/resources/en_US/element/string.json +++ b/entry/src/main/resources/en_US/element/string.json @@ -13,12 +13,12 @@ "value": "label" }, { - "name": "app_permission_MEDIA_LOCATION", - "value": "获取媒体图片" + "name": "app_permission_WRITE_IMAGEVIDEO", + "value": "获取写入媒体资源权限" }, { - "name": "app_permission_READ_MEDIA", - "value": "读媒体图片" + "name": "app_permission_READ_IMAGEVIDEO", + "value": "获取读媒体资源权限" } ] } \ No newline at end of file diff --git a/entry/src/main/resources/zh_CN/element/string.json b/entry/src/main/resources/zh_CN/element/string.json index bb49ac2..6250115 100644 --- a/entry/src/main/resources/zh_CN/element/string.json +++ b/entry/src/main/resources/zh_CN/element/string.json @@ -13,12 +13,12 @@ "value": "label" }, { - "name": "app_permission_MEDIA_LOCATION", - "value": "获取媒体图片" + "name": "app_permission_WRITE_IMAGEVIDEO", + "value": "获取写入媒体资源权限" }, { - "name": "app_permission_READ_MEDIA", - "value": "读媒体图片" + "name": "app_permission_READ_IMAGEVIDEO", + "value": "获取读媒体资源权限" } ] } \ No newline at end of file