* 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 <log.h>
#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);
}
}