1/* 2 * Copyright (c) 2021 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16const medialibrary = requireInternal('multimedia.mediaLibrary'); 17const featureAbility = requireNapi('ability.featureAbility'); 18 19async function startMediaSelect(option, asyncCallback) 20{ 21 console.log("MediaLibrary startMediaSelectInner param num " + arguments.length); 22 console.log("MediaLibrary startMediaSelectInner param " + JSON.stringify(option)); 23 let select = "singleselect" 24 let parameter = { 25 want: 26 { 27 action: "ohos.want.action.photoPicker", 28 type: select, 29 parameters: { 30 uri : select, 31 filterMediaType: "FILTER_MEDIA_TYPE_ALL", 32 maxSelectCount: 1, 33 } 34 }, 35 action: "ohos.want.action.photoPicker", 36 type: select, 37 parameters: { 38 uri : select, 39 filterMediaType: "FILTER_MEDIA_TYPE_ALL", 40 maxSelectCount: 1, 41 } 42 } 43 if (option != undefined && typeof option == 'object') { 44 if (option.count != undefined && option.count > 1) { 45 parameter.want.type = "multipleselect"; 46 parameter.want.parameters.uri = "multipleselect"; 47 parameter.want.parameters.maxSelectCount = option.count; 48 parameter.type = "multipleselect"; 49 parameter.parameters.uri = "multipleselect"; 50 parameter.parameters.maxSelectCount = option.count; 51 } 52 if (option.type != undefined) { 53 parameter.want.parameters.filterMediaType = option.type; 54 parameter.parameters.filterMediaType = option.type; 55 } 56 } 57 if (arguments.length == 2 && typeof asyncCallback != "function") { 58 console.log("MediaLibrary startMediaSelectInner callback invalid"); 59 throw Error("invalid callback") 60 } 61 console.log("MediaLibrary startMediaSelectInner parameter " + JSON.stringify(parameter)); 62 let result = await featureAbility.startAbilityForResult(parameter) 63 console.log("MediaLibrary startMediaSelectInner result " +JSON.stringify(result)); 64 let uri = result.want.parameters["select-item-list"] 65 if (arguments.length == 2 && typeof asyncCallback == "function") { 66 console.log("MediaLibrary startMediaSelectInner callback " + uri); 67 return asyncCallback(result.resultCode, uri) 68 } 69 return new Promise((resolve, reject) => { 70 if (result.resultCode == 0) { 71 console.log("MediaLibrary startMediaSelectInner promise " + uri); 72 resolve(uri) 73 } else { 74 console.log("MediaLibrary startMediaSelectInner err " + result.resultCode); 75 reject(result.resultCode) 76 } 77 }) 78} 79 80function getMediaLibrary(context) 81{ 82 let media = medialibrary.getMediaLibrary(context) 83 console.log("MediaLibrary getMediaLibrary inner "); 84 if (media != undefined) { 85 console.log("MediaLibrary getMediaLibrary inner add startMediaSelect"); 86 media.startMediaSelect = startMediaSelect; 87 } 88 return media; 89} 90 91function getScannerInstance(context) 92{ 93 console.log("MediaLibrary getScannerInstance js caller "); 94 let instance = medialibrary.getScannerInstance(context) 95 return instance; 96} 97 98export default { 99 getMediaLibrary: getMediaLibrary, 100 getScannerInstance: getScannerInstance, 101 MediaType: medialibrary.MediaType, 102 FileKey: medialibrary.FileKey, 103 DirectoryType: medialibrary.DirectoryType, 104 PrivateAlbumType: medialibrary.PrivateAlbumType, 105}