1/* 2 * Copyright (c) 2022 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 16import missionManager from '@ohos.application.missionManager'; 17import image from '@ohos.multimedia.image'; 18import MissionInfo from '../../../../../../base/src/main/ets/default/bean/MisssionInfo'; 19import { LauncherAbilityManager, Logger } from '@ohos/base'; 20 21const NUMMAX: number = 20 22const TAG: string = 'MissionModel' 23 24class MissionModel { 25 async getMissionInfos(context: Context) { 26 let missionInfoList: Array<MissionInfo> = new Array<MissionInfo>() 27 let missionInfos = await missionManager.getMissionInfos('', NUMMAX) 28 Logger.info(TAG, `getMissionInfos = ${missionInfos.length}`) 29 let launcherAbilityManager = LauncherAbilityManager.getInstance(context) 30 for (let recentItem of missionInfos) { 31 let missionInfo = new MissionInfo() 32 missionInfo.missionId = recentItem.missionId 33 missionInfo.bundleName = recentItem.want.bundleName! 34 missionInfo.abilityName = recentItem.want.abilityName! 35 missionInfo.lockedState = recentItem.lockedState 36 let appInfo = await launcherAbilityManager.getAppInfoByBundleName(missionInfo.bundleName) 37 if (appInfo == undefined) { 38 continue 39 } 40 missionInfo.appIconId = appInfo.appIconId! 41 missionInfo.appName = appInfo.appName! 42 Logger.info(TAG, `missionInfo = ${JSON.stringify(missionInfo)}`) 43 missionInfoList.push(missionInfo) 44 } 45 Logger.info(TAG, `getMissionInfos result, count= ${JSON.stringify(missionInfoList)}`) 46 return missionInfoList 47 } 48 49 async getSnapShot(missionId: number) { 50 let missionSnapshot = await missionManager.getMissionSnapShot('', missionId) 51 let snapshot: image.PixelMap = missionSnapshot.snapshot 52 return snapshot 53 } 54 55 async lockMission(missionId: number) { 56 await missionManager.lockMission(missionId) 57 } 58 59 async unLockMission(missionId: number) { 60 await missionManager.unlockMission(missionId) 61 } 62 63 async clearMission(missionId: number) { 64 await missionManager.clearMission(missionId) 65 } 66 67 async clearAllMission() { 68 await missionManager.clearAllMissions() 69 } 70} 71 72export default new MissionModel()