Add IntentExecutor and InsightIntentContext.

Signed-off-by: zhangyafei.echo <zhangyafei12@huawei.com>
Change-Id: Iec45a6443c7bd276875e770cc100886e5ebfb746
This commit is contained in:
zhangyafei.echo 2023-09-22 17:51:26 +08:00
parent de08573c7c
commit 9e86e5512c
3 changed files with 254 additions and 0 deletions

View File

@ -0,0 +1,82 @@
/*
* Copyright (c) 2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License"),
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import type { AsyncCallback } from './@ohos.base';
import type Want from './@ohos.app.ability.Want';
/**
* The context of insight intent executor.
*
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
export default class InsightIntentContext {
/**
* Starts a new ability.
* This interface only allows you to start abilities within the same bundle and specify the bundleName.
* This interface only allows called in UIAbility insight intent execute mode.
*
* @param { Want } want - Indicates the ability to start.
* @param { AsyncCallback<void> } callback - The callback of startAbility.
* @throws { BusinessError } 401 - If the input parameter is not valid parameter.
* @throws { BusinessError } 16000001 - The specified ability does not exist.
* @throws { BusinessError } 16000004 - Can not start invisible component.
* @throws { BusinessError } 16000005 - The specified process does not have the permission.
* @throws { BusinessError } 16000006 - Cross-user operations are not allowed.
* @throws { BusinessError } 16000008 - The crowdtesting application expires.
* @throws { BusinessError } 16000009 - An ability cannot be started or stopped in Wukong mode.
* @throws { BusinessError } 16000011 - The context does not exist.
* @throws { BusinessError } 16000012 - The application is controlled.
* @throws { BusinessError } 16000013 - The application is controlled by EDM.
* @throws { BusinessError } 16000050 - Internal error.
* @throws { BusinessError } 16000053 - The ability is not on the top of the UI.
* @throws { BusinessError } 16000055 - Installation-free timed out.
* @throws { BusinessError } 16000061 - Can not start component belongs to other bundle.
* @throws { BusinessError } 16200001 - The caller has been released.
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
startAbility(want: Want, callback: AsyncCallback<void>): void;
/**
* Starts a new ability.
* This interface only allows you to start abilities within the same bundle and specify the bundleName.
* This interface only allows called in UIAbility insight intent execute mode.
*
* @param { Want } want - Indicates the ability to start.
* @returns { Promise<void> } The promise returned by the function.
* @throws { BusinessError } 401 - If the input parameter is not valid parameter.
* @throws { BusinessError } 16000001 - The specified ability does not exist.
* @throws { BusinessError } 16000004 - Can not start invisible component.
* @throws { BusinessError } 16000005 - The specified process does not have the permission.
* @throws { BusinessError } 16000006 - Cross-user operations are not allowed.
* @throws { BusinessError } 16000008 - The crowdtesting application expires.
* @throws { BusinessError } 16000009 - An ability cannot be started or stopped in Wukong mode.
* @throws { BusinessError } 16000011 - The context does not exist.
* @throws { BusinessError } 16000012 - The application is controlled.
* @throws { BusinessError } 16000013 - The application is controlled by EDM.
* @throws { BusinessError } 16000050 - Internal error.
* @throws { BusinessError } 16000053 - The ability is not on the top of the UI.
* @throws { BusinessError } 16000055 - Installation-free timed out.
* @throws { BusinessError } 16000061 - Can not start component belongs to other bundle.
* @throws { BusinessError } 16200001 - The caller has been released.
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
startAbility(want: Want): Promise<void>;
}

View File

@ -0,0 +1,79 @@
/*
* Copyright (c) 2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License"),
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import type window from './@ohos.window';
import type insightIntent from './@ohos.app.ability.insightIntent';
import type InsightIntentContext from './@ohos.app.ability.InsightIntentContext';
import type UIExtensionContentSession from './@ohos.app.ability.UIExtensionContentSession';
/**
* The class of insight intent executor.
*
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
export default class InsightIntentExecutor {
/**
* Indicates context of insight intent.
*
* @type { InsightIntentContext }
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
context: InsightIntentContext;
/**
* Called when a UIAbility executes the insight intent in the foreground.
*
* @param { string } name - Indicates the insight intent name.
* @param { Record<string, Object> } param - Indicates the insight intent parameters.
* @param { window.WindowStage } pageLoader - Indicates the page loader.
* @returns { insightIntent.ExecuteResult | Promise<insightIntent.ExecuteResult> } The result of insight intent execution, support promise.
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @StageModelOnly
* @since 11
*/
onExecuteInUIAbilityForegroundMode(name: string, param: Record<string, Object>, pageLoader: window.WindowStage):
insightIntent.ExecuteResult | Promise<insightIntent.ExecuteResult>;
/**
* Called when a UIAbility executes the insight intent in the background.
*
* @param { string } name - Indicates the insight intent name.
* @param { Record<string, Object> } param - Indicates the insight intent parameters.
* @returns { insightIntent.ExecuteResult | Promise<insightIntent.ExecuteResult> } The result of insight intent execution, support promise.
* @syscap SystemCapability.Ability.AbilityRuntime.AbilityCore
* @StageModelOnly
* @since 11
*/
onExecuteInUIAbilityBackgroundMode(name: string, param: Record<string, Object>):
insightIntent.ExecuteResult | Promise<insightIntent.ExecuteResult>;
/**
* Called when a UIExtensionAbility executes the insight intent.
*
* @param { string } name - Indicates the insight intent name.
* @param { Record<string, Object> } param - Indicates the insight intent parameters.
* @param { UIExtensionContentSession } pageLoader - Indicates the page loader.
* @returns { insightIntent.ExecuteResult | Promise<insightIntent.ExecuteResult> } The result of insight intent execution, support promise.
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
onExecuteInUIExtensionAbility(name: string, param: Record<string, Object>, pageLoader: UIExtensionContentSession):
insightIntent.ExecuteResult | Promise<insightIntent.ExecuteResult>;
}

View File

@ -0,0 +1,93 @@
/*
* Copyright (c) 2023 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License"),
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* interface of insightIntent.
*
* @namespace insightIntent
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
declare namespace insightIntent {
/**
* Enum for supported execute mode.
*
* @enum { number }
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
enum ExecuteMode {
/**
* UIAbility foreground.
*
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
UI_ABILITY_FOREGROUND = 0,
/**
* UIAbility background.
*
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
UI_ABILITY_BACKGROUND = 1,
/**
* UIExtensionAbility.
*
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
UI_EXTENSION_ABILITY = 2,
}
/**
* Result of intent execution.
*
* @typedef ExecuteResult
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
interface ExecuteResult {
/**
* Indicates result code.
*
* @type { number }
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
code: number;
/**
* Indicates execute result.
*
* @type { ?Record<string, Object> }
* @syscap SystemCapability.Ability.AbilityRuntime.Core
* @StageModelOnly
* @since 11
*/
result?: Record<string, Object>;
}
}
export default insightIntent;