/* * Copyright (c) 2020 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. */ #include "ability_manager.h" #include #include "ability_service_interface.h" #include "ability_service_manager.h" #include "abilityms_client.h" #include "ability_self_callback.h" #include "rpc_errno.h" extern "C" { const int DEFAULT_TOKEN = 1; int StartAbility(const Want *want) { if (want == nullptr) { HILOG_ERROR(HILOG_MODULE_APP, "want is null, StartAbility failed"); return -1; } OHOS::AbilityMsClient::GetInstance().Initialize(); return OHOS::AbilityMsClient::GetInstance().ScheduleAms(want, 0, nullptr, START_ABILITY); } int StartAbilityWithCallback(const Want *want, IAbilityStartCallback iAbilityStartCallback) { if (want == nullptr || iAbilityStartCallback == nullptr) { HILOG_ERROR(HILOG_MODULE_APP, "want or callback is null, StartAbilityWithCallback failed!"); return -1; } const SvcIdentity *svc = OHOS::AbilitySelfCallback::GetInstance() .RegisterAbilitySelfCallback(iAbilityStartCallback); if (svc == nullptr) { HILOG_ERROR(HILOG_MODULE_APP, "Register svc failed"); return -1; } OHOS::AbilityMsClient::GetInstance().Initialize(); return OHOS::AbilityMsClient::GetInstance().ScheduleAms(want, 0, svc, START_ABILITY_WITH_CB); } int StopAbility(const Want *want) { if (want == nullptr) { HILOG_ERROR(HILOG_MODULE_APP, "want is null, StopAbility failed"); return -1; } OHOS::AbilityMsClient::GetInstance().Initialize(); return OHOS::AbilityMsClient::GetInstance().ScheduleAms(want, 0, nullptr, TERMINATE_SERVICE); } int ConnectAbility(const Want *want, const IAbilityConnection *conn, void *data) { if (want == nullptr) { HILOG_ERROR(HILOG_MODULE_APP, "want is null, ConnectAbility failed"); return -1; } if (conn == nullptr) { HILOG_ERROR(HILOG_MODULE_APP, "conn is null, ConnectAbility failed"); return -1; } return OHOS::AbilityServiceManager::GetInstance().ConnectAbility(*want, *conn, DEFAULT_TOKEN, data); } int DisconnectAbility(const IAbilityConnection *conn) { if (conn == nullptr) { HILOG_ERROR(HILOG_MODULE_APP, "conn is null, DisconnectAbility failed"); return ERR_INVALID_PARAM; } return OHOS::AbilityServiceManager::GetInstance().DisconnectAbility(*conn, DEFAULT_TOKEN); } }