• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 #include "ani_manager.h"
16 
17 #include "ans_log_wrapper.h"
18 #include "ani_display_badge.h"
19 #include "ani_slot.h"
20 #include "ani_cance.h"
21 #include "ani_notification_enable.h"
22 #include "ani_do_not_disturb_date.h"
23 #include "ani_do_not_disturb_profile.h"
24 #include "ani_get_active.h"
25 #include "ani_publish.h"
26 #include "ani_local_live_view.h"
27 #include "ani_request_enable.h"
28 #include "ani_on.h"
29 #include "ani_support_template.h"
30 #include "ani_distributed_enable.h"
31 #include "ani_remove_group.h"
32 #include "ani_open_settings.h"
33 #include "ani_sync_config.h"
34 
35 namespace OHOS {
36 namespace NotificationManagerSts {
37 static std::array kitManagerFunctions = {
38     ani_native_function {"nativeCancelAll", nullptr, reinterpret_cast<void *>(AniCancelAll)},
39     ani_native_function {"nativeCancelWithIdOptionalLabel", nullptr,
40         reinterpret_cast<void *>(AniCancelWithIdOptinalLabel)},
41     ani_native_function {"nativeCancelWithId", nullptr, reinterpret_cast<void *>(AniCancelWithId)},
42     ani_native_function {"nativeCancelWithIdLabel", nullptr, reinterpret_cast<void *>(AniCancelWithIdLabel)},
43     ani_native_function {"nativeCancelWithBundle", nullptr, reinterpret_cast<void *>(AniCancelWithBundle)},
44     ani_native_function {"nativeDisplayBadge", nullptr, reinterpret_cast<void *>(AniDisplayBadge)},
45     ani_native_function {"nativeIsBadgeDisplayed", nullptr, reinterpret_cast<void *>(AniIsBadgeDisplayed)},
46     ani_native_function {"nativeGetActiveNotificationCount", ":D",
47         reinterpret_cast<void *>(AniGetActiveNotificationCount)},
48     ani_native_function {"nativeGetActiveNotifications", nullptr,
49         reinterpret_cast<void *>(AniGetActiveNotifications)},
50     ani_native_function {"nativeGetAllActiveNotifications", nullptr,
51         reinterpret_cast<void *>(AniGetAllActiveNotifications)},
52     ani_native_function {"nativeAddDoNotDisturbProfile", nullptr,
53         reinterpret_cast<void *>(AniAddDoNotDisturbProfile)},
54     ani_native_function {"nativeRemoveDoNotDisturbProfile", nullptr,
55         reinterpret_cast<void *>(AniRemoveDoNotDisturbProfile)},
56     ani_native_function {"nativeSubscribeSystemLiveView", nullptr,
57         reinterpret_cast<void *>(AniSubscribeSystemLiveView)},
58     ani_native_function {"nativeTriggerSystemLiveView", nullptr,
59         reinterpret_cast<void *>(AniTriggerSystemLiveView)},
60     ani_native_function {"nativePublishWithUserId", nullptr, reinterpret_cast<void *>(AniPublishWithId)},
61     ani_native_function {"nativePublish", nullptr, reinterpret_cast<void *>(AniPublish)},
62     ani_native_function {"nativeGetSlotFlagsByBundle", nullptr, reinterpret_cast<void *>(AniGetSlotFlagsByBundle)},
63     ani_native_function {"nativeSetSlotFlagsByBundle", nullptr, reinterpret_cast<void *>(AniSetSlotFlagsByBundle)},
64     ani_native_function {"nativeGetSlotsByBundle", nullptr, reinterpret_cast<void *>(AniGetSlotsByBundle)},
65     ani_native_function {"nativeIsNotificationSlotEnabled", nullptr,
66         reinterpret_cast<void *>(AniIsNotificationSlotEnabled)},
67     ani_native_function {"nativeSetNotificationEnableSlot", nullptr,
68         reinterpret_cast<void *>(AniSetNotificationEnableSlot)},
69     ani_native_function {"nativeSetNotificationEnableSlotWithForce", nullptr,
70         reinterpret_cast<void *>(AniSetNotificationEnableSlotWithForce)},
71     ani_native_function {"nativeIsNotificationEnabled", nullptr,
72         reinterpret_cast<void *>(AniIsNotificationEnabled)},
73     ani_native_function {"nativeIsNotificationEnabledWithId", nullptr,
74         reinterpret_cast<void *>(AniIsNotificationEnabledWithId)},
75     ani_native_function {"nativeIsNotificationEnabledWithBundleOption", nullptr,
76         reinterpret_cast<void *>(AniIsNotificationEnabledWithBundleOption)},
77     ani_native_function {"nativeSetNotificationEnable",
78         nullptr, reinterpret_cast<void *>(AniSetNotificationEnable)},
79     ani_native_function {"nativeRequestEnableNotification",
80         "Lapplication/UIAbilityContext/UIAbilityContext;:Lstd/core/Promise;",
81         reinterpret_cast<void *>(AniRequestEnableNotification)},
82     ani_native_function {"nativePublishAsBundle", nullptr, reinterpret_cast<void *>(AniPublishAsBundle)},
83     ani_native_function {"nativePublishAsBundleWithBundleOption", nullptr,
84         reinterpret_cast<void *>(AniPublishAsBundleWithBundleOption)},
85     ani_native_function {"nativeCancelAsBundle", nullptr, reinterpret_cast<void *>(AniCancelAsBundle)},
86     ani_native_function {"nativeCancelAsBundleWithBundleOption", nullptr,
87         reinterpret_cast<void *>(AniCancelAsBundleWithBundleOption)},
88     ani_native_function {"nativeCancelGroup", nullptr, reinterpret_cast<void *>(AniCancelGroup)},
89     ani_native_function {"nativeSetDoNotDisturbDate", nullptr, reinterpret_cast<void *>(AniSetDoNotDisturbDate)},
90     ani_native_function {"nativeSetDoNotDisturbDateWithId", nullptr,
91         reinterpret_cast<void *>(AniSetDoNotDisturbDateWithId)},
92     ani_native_function {"nativeGetDoNotDisturbDate", nullptr, reinterpret_cast<void *>(AniGetDoNotDisturbDate)},
93     ani_native_function {"nativeGetDoNotDisturbDateWithId", nullptr,
94         reinterpret_cast<void *>(AniGetDoNotDisturbDateWithId)},
95     ani_native_function {"nativeIsSupportDoNotDisturbMode", nullptr,
96         reinterpret_cast<void *>(AniIsSupportDoNotDisturbMode)},
97     ani_native_function {"nativeGetDoNotDisturbProfile", nullptr, reinterpret_cast<void *>(AniGetDoNotDisturbProfile)},
98     ani_native_function {"nativeOn",
99         "Lstd/core/String;"
100         "Lstd/core/Function1;"
101         "Lnotification/notificationRequest/NotificationCheckRequest;"
102         ":I",
103         reinterpret_cast<void *>(AniOn)},
104     ani_native_function {"nativeOff", "Lstd/core/String;Lstd/core/Function1;:I", reinterpret_cast<void *>(AniOff)},
105     ani_native_function {"nativeGetAllNotificationEnabledBundles", nullptr,
106         reinterpret_cast<void *>(AniGetAllNotificationEnabledBundles)},
107     ani_native_function {"nativeIsNotificationEnabledSync", nullptr,
108         reinterpret_cast<void *>(AniIsNotificationEnabledSync)},
109     ani_native_function {"nativeSetBadgeNumber", "D:V",
110         reinterpret_cast<void *>(AniSetBadgeNumber)},
111     ani_native_function {"nativeSetBadgeNumberByBundle", nullptr,
112         reinterpret_cast<void *>(AniSetBadgeNumberByBundle)},
113     ani_native_function {"nativeGetActiveNotificationByFilter", nullptr,
114         reinterpret_cast<void *>(AniGetActiveNotificationByFilter)},
115     ani_native_function {"nativeRemoveGroupByBundle", nullptr,
116         reinterpret_cast<void *>(AniRemoveGroupByBundle)},
117     ani_native_function {"nativeAddSlotByNotificationSlot", nullptr,
118         reinterpret_cast<void *>(AniAddSlotByNotificationSlot)},
119     ani_native_function {"nativeAddSlotBySlotType", nullptr,
120         reinterpret_cast<void *>(AniAddSlotBySlotType)},
121     ani_native_function {"nativeAddSlots", nullptr,
122         reinterpret_cast<void *>(AniAddSlots)},
123     ani_native_function {"nativeGetSlot", nullptr,
124         reinterpret_cast<void *>(AniGetSlot)},
125     ani_native_function {"nativeGetSlotByBundle", nullptr,
126         reinterpret_cast<void *>(AniGetSlotByBundle)},
127     ani_native_function {"nativeGetSlots", nullptr,
128         reinterpret_cast<void *>(AniGetSlots)},
129     ani_native_function {"nativeRemoveSlot", nullptr,
130         reinterpret_cast<void *>(AniRemoveSlot)},
131     ani_native_function {"nativeRemoveAllSlots", nullptr,
132         reinterpret_cast<void *>(AniRemoveAllSlots)},
133     ani_native_function {"nativeSetSlotByBundle", nullptr,
134         reinterpret_cast<void *>(AniSetSlotByBundle)},
135     ani_native_function {"nativeGetSlotNumByBundle", nullptr,
136         reinterpret_cast<void *>(AniGetSlotNumByBundle)},
137     ani_native_function {"nativeOpenNotificationSettings",
138         "Lapplication/UIAbilityContext/UIAbilityContext;:Lstd/core/Promise;",
139         reinterpret_cast<void *>(AniOpenNotificationSettings)},
140     ani_native_function {"nativesetTargetDeviceStatus", nullptr,
141         reinterpret_cast<void *>(AniSetTargetDeviceStatus)},
142     ani_native_function {"nativesetDistributedEnabledByBundle", nullptr,
143         reinterpret_cast<void *>(AniSetDistributedEnableByBundleAndType)},
144     ani_native_function {"nativesetSmartReminderEnabled", nullptr,
145         reinterpret_cast<void *>(AniSetSmartReminderEnable)},
146     ani_native_function {"nativeisSmartReminderEnabled", nullptr,
147         reinterpret_cast<void *>(AniIsSmartReminderEnabled)},
148     ani_native_function {"nativesetDistributedEnabledBySlot", nullptr,
149         reinterpret_cast<void *>(AniSetDistributedEnableBySlot)},
150     ani_native_function {"nativeisDistributedEnabledBySlot", nullptr,
151         reinterpret_cast<void *>(AniIsDistributedEnabledBySlot)},
152     ani_native_function {"nativesetAdditionalConfig", nullptr,
153         reinterpret_cast<void *>(AniSetAdditionalConfig)},
154     ani_native_function {"nativesetDistributedEnableByBundle", nullptr,
155         reinterpret_cast<void *>(AniSetDistributedEnableByBundle)},
156     ani_native_function {"nativedisableNotificationFeature", nullptr,
157         reinterpret_cast<void *>(AniDisableNotificationFeature)},
158     ani_native_function {"nativeIsSupportTemplate", nullptr, reinterpret_cast<void *>(AniIsSupportTemplate)},
159     ani_native_function {"nativeSetDistributedEnable", nullptr, reinterpret_cast<void *>(AniSetDistributedEnable)},
160     ani_native_function {"nativeIsDistributedEnabled", nullptr, reinterpret_cast<void *>(AniIsDistributedEnabled)},
161     ani_native_function {"nativeIsDistributedEnabledByBundle", nullptr,
162         reinterpret_cast<void *>(AniIsDistributedEnabledByBundle)},
163     ani_native_function {"nativeIsDistributedEnabledByBundleType", nullptr,
164         reinterpret_cast<void *>(AniIsDistributedEnabledByBundleType)},
165     ani_native_function {"nativeGetDeviceRemindType", nullptr, reinterpret_cast<void *>(AniGetDeviceRemindType)},
166     ani_native_function {"nativeGetSyncNotificationEnabledWithoutApp", nullptr,
167         reinterpret_cast<void *>(AniGetSyncNotificationEnabledWithoutApp)},
168     ani_native_function {"nativeSetSyncNotificationEnabledWithoutApp", nullptr,
169         reinterpret_cast<void *>(AniSetSyncNotificationEnabledWithoutApp)},
170 };
171 
AniNotificationManagerRegistryInit(ani_env * env)172 void AniNotificationManagerRegistryInit(ani_env *env)
173 {
174     ANS_LOGD("StsNotificationManagerRegistryInit call");
175     ani_status status = ANI_ERROR;
176     if (env->ResetError() != ANI_OK) {
177         ANS_LOGD("ResetError failed");
178     }
179     ani_namespace ns;
180     status = env->FindNamespace("L@ohos/notificationManager/notificationManager;", &ns);
181     if (status != ANI_OK) {
182         ANS_LOGE("FindNamespace notificationManager failed status : %{public}d", status);
183         return;
184     }
185     status = env->Namespace_BindNativeFunctions(ns, kitManagerFunctions.data(), kitManagerFunctions.size());
186     if (status != ANI_OK) {
187         ANS_LOGD("Namespace_BindNativeFunctions failed status : %{public}d", status);
188     }
189     if (env->ResetError() != ANI_OK) {
190         ANS_LOGD("ResetError failed");
191     }
192     ANS_LOGD("StsNotificationManagerRegistryInit end");
193 }
194 } // namespace NotificationManagerSts
195 } // namespace OHOS
196 
197 extern "C" {
ANI_Constructor(ani_vm * vm,uint32_t * result)198 ANI_EXPORT ani_status ANI_Constructor(ani_vm *vm, uint32_t *result)
199 {
200     ANS_LOGD("ANI_Constructor");
201     ani_env *env = nullptr;
202     ani_status status = ANI_ERROR;
203     status = vm->GetEnv(ANI_VERSION_1, &env);
204     if (status != ANI_OK) {
205         ANS_LOGE("GetEnv failed status : %{public}d", status);
206         return ANI_NOT_FOUND;
207     }
208 
209     OHOS::NotificationManagerSts::AniNotificationManagerRegistryInit(env);
210     *result = ANI_VERSION_1;
211     ANS_LOGD("ANI_Constructor finish");
212     return ANI_OK;
213 }
214 }