1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openharmony-ability_ability_runtime

 / Детали:

[ANI-Issue]: Частично napi интерфейсы соответствуют ani интерфейсу недостаточно четко,希望能提供明确的例子...

Предстоит сделать
Владелец
Создано  
04.03.2025

Перевод: [ANI-Issue]: Часть интерфейсов napi соответствует ani интерфейсу недостаточно четко,希望能提供明确的例子 Дополнительно: [ANI-Issue]: Часть интерфейсов napi соответствует ani интерфейсу недостаточно четко,希望能提供明确的例子 Финальный текст: [ANI-Issue]: Часть интерфейсов napi соответствует ani интерфейсу недостаточно четко,希望能提供明确的例子 Полный текст с исправлениями: [ANI-Issue]: Часть интерфейсов napi соответствует ani интерфейсу недостаточно четко,希望能提供明确的例子

Описание проблемы

Что вы хотите сделать? Исходная цель и запрос. [Обязательно]

Какие ani-интерфейсы должны использоваться вместо napi_get_global, napi_get_value_external и napi_unwrap? Как использовать эти интерфейсы? Нужны примеры использования.

Какова проблема? Предоставьте связанный код! [Обязательно]

На данный момент ani не предоставляет аналогичные возможности. Ниже приведены соответствующие коды для napi:

napi_status IsStageContext(napi_env env, napi_value object, bool& stageMode)
{
    napi_value boolValue;
    OHOS_CALL_NAPI_RETURN(napi_get_named_property(env, object, "stageMode", &boolValue)); // OHOS_CALL_NAPI_RETURN служит для проверки возвращаемого значения

    bool value = false;
    OHOS_CALL_NAPI_RETURN(napi_get_value_bool(env, boolValue, &value));

    stageMode = value;
    return napi_ok;
}
std::shared_ptr<Context> GetStageModeContext(napi_env env, napi_value object)
{
    void* wrapped = nullptr;
    napi_status ret = napi_unwrap(env, object, &wrapped);
    if (ret != napi_ok) {
        return nullptr;
    }

    auto weakContext = static_cast<std::weak_ptr<Context>*>(wrapped);
    return weakContext != nullptr ? weakContext->lock() : nullptr;
}
AppExecFwk::Ability* GetCurrentAbility(napi_env env)
{
    napi_value global;
    napi_status status = napi_get_global(env, &global);
    if (status != napi_ok) {
        return nullptr;
    }

    napi_value abilityObj;
    status = napi_get_named_property(env, global, "ability", &abilityObj);
    if (status != napi_ok || abilityObj == nullptr) {
        return nullptr;
    }

    void* pointer = nullptr;
    status = napi_get_value_external(env, abilityObj, &pointer);
    if (status != napi_ok) {
        return nullptr;
    }

    return static_cast<AppExecFwk::Ability*>(pointer);
}

Как воспроизвести проблему? [Обязательно]

Нет### Дополнительные журналы и информация [Обязательно]
Нет

Модуль и зависимости [Рекомендовано заполнять, влияет на приоритет]

например, базовая возможность, интерфейс модификации, высокий приоритет

Комментарий (0)

GitLife Service Account Задача создана
GitLife Service Account добавлено
 
bug
label.
GitLife Service Account добавлено
 
waiting_for_assign
label.
Развернуть журнал операций

Вход Перед тем как оставить комментарий

Статус
Ответственный
Контрольная точка
Pull Requests
Связанные запросы на слияние могут быть закрыты после их объединения
Ветки
Дата начала   -   Крайний срок
-
Закрепить/Открепить
Приоритет
Участники(1)
1
https://api.gitlife.ru/oschina-mirror/openharmony-ability_ability_runtime.git
git@api.gitlife.ru:oschina-mirror/openharmony-ability_ability_runtime.git
oschina-mirror
openharmony-ability_ability_runtime
openharmony-ability_ability_runtime