1 /*
2 * Copyright (C) 2021-2022 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
16 #include "resource_utils.h"
17
18 #include <sys/stat.h>
19
20 #include "bundle_mgr_proxy.h"
21 #include "if_system_ability_manager.h"
22 #include "iservice_registry.h"
23 #include "singleton.h"
24 #include "system_ability_definition.h"
25 #include "telephony_log_wrapper.h"
26
27 namespace OHOS {
28 namespace Telephony {
29 constexpr int32_t HAP_USER_ID = 100;
30 const std::string ResourceUtils::RESOURCE_HAP_BUNDLE_NAME = "ohos.telephony.resources";
31 const std::string ResourceUtils::IS_NOTIFY_USER_RESTRICTIED_CHANGE = "is_notify_user_restrictied_change";
32 const std::string ResourceUtils::IS_CS_CAPABLE = "is_cs_capable";
33 const std::string ResourceUtils::IS_SWITCH_PHONE_REG_CHANGE = "is_switch_phone_reg_change";
34 const std::string ResourceUtils::SPN_FORMATS = "spn_formats";
35 const std::string ResourceUtils::EMERGENCY_CALLS_ONLY = "emergency_calls_only";
36 const std::string ResourceUtils::OUT_OF_SERIVCE = "out_of_serivce";
37 const std::string ResourceUtils::CMCC = "cmcc";
38 const std::string ResourceUtils::CUCC = "cucc";
39 const std::string ResourceUtils::CTCC = "ctcc";
40 const std::string ResourceUtils::CALL_FAILED_UNASSIGNED_NUMBER = "call_failed_unassigned_number";
41 const std::string ResourceUtils::CALL_FAILED_NO_ROUTE_TO_DESTINATION = "call_failed_no_route_to_destination";
42 const std::string ResourceUtils::CALL_FAILED_CHANNEL_UNACCEPTABLE = "call_failed_channel_unacceptable";
43 const std::string ResourceUtils::CALL_FAILED_OPERATOR_DETERMINED_BARRING = "call_failed_operator_determined_barring";
44 const std::string ResourceUtils::CALL_FAILED_NORMAL_CALL_CLEARING = "call_failed_normal_call_clearing";
45 const std::string ResourceUtils::CALL_FAILED_USER_BUSY = "call_failed_user_busy";
46 const std::string ResourceUtils::CALL_FAILED_NO_USER_RESPONDING = "call_failed_no_user_responding";
47 const std::string ResourceUtils::CALL_FAILED_USER_ALERTING_NO_ANSWER = "call_failed_user_no_answer";
48 const std::string ResourceUtils::CALL_FAILED_CALL_REJECTED = "call_failed_call_rejected";
49 const std::string ResourceUtils::CALL_FAILED_NUMBER_CHANGED = "call_failed_number_changed";
50 const std::string ResourceUtils::CALL_FAILED_CALL_REJECTED_DESTINATION = "call_failed_call_rejected_destination";
51 const std::string ResourceUtils::CALL_FAILED_FAILED_PRE_EMPTION = "call_failed_pre_emption";
52 const std::string ResourceUtils::CALL_FAILED_NON_SELECTED_USER_CLEARING = "call_failed_non_selected_user_clearing";
53 const std::string ResourceUtils::CALL_FAILED_DESTINATION_OUT_OF_ORDER = "call_failed_destination_out_of_order";
54 const std::string ResourceUtils::CALL_FAILED_INVALID_NUMBER_FORMAT = "call_failed_invalid_number_format";
55 const std::string ResourceUtils::CALL_FAILED_FACILITY_REJECTED = "call_failed_facility_rejected";
56 const std::string ResourceUtils::CALL_FAILED_RESPONSE_TO_STATUS_ENQUIRY = "call_failed_response_to_status_enquiry";
57 const std::string ResourceUtils::CALL_FAILED_NORMAL_UNSPECIFIED = "call_failed_normal_unspecified";
58 const std::string ResourceUtils::CALL_FAILED_NO_CIRCUIT_CHANNEL_AVAILABLE = "call_failed_no_circuit_channel_available";
59 const std::string ResourceUtils::CALL_FAILED_NETWORK_OUT_OF_ORDER = "call_failed_network_out_of_order";
60 const std::string ResourceUtils::CALL_FAILED_TEMPORARY_FAILURE = "call_failed_temporary_failure";
61 const std::string ResourceUtils::CALL_FAILED_SWITCHING_EQUIPMENT_CONGESTION =
62 "call_failed_switching_equipment_congestion";
63 const std::string ResourceUtils::CALL_FAILED_ACCESS_INFORMATION_DISCARDED = "call_failed_access_information_discarded";
64 const std::string ResourceUtils::CALL_FAILED_REQUEST_CIRCUIT_CHANNEL_NOT_AVAILABLE =
65 "call_failed_requested_circuit_or_channel_not_available";
66 const std::string ResourceUtils::CALL_FAILED_RESOURCES_UNAVAILABLE_UNSPECIFIED =
67 "call_failed_resources_unavailable_or_unspecified";
68 const std::string ResourceUtils::CALL_FAILED_QUALITY_OF_SERVICE_UNAVAILABLE =
69 "call_failed_quality_of_service_unavailable";
70 const std::string ResourceUtils::CALL_FAILED_REQUESTED_FACILITY_NOT_SUBSCRIBED =
71 "call_failed_requested_facility_not_subscribed";
72 const std::string ResourceUtils::CALL_FAILED_INCOMING_CALLS_BARRED_WITHIN_THE_CUG =
73 "call_failed_incoming_calls_barred_within_the_CUG";
74 const std::string ResourceUtils::CALL_FAILED_BEARER_CAPABILITY_NOT_AUTHORIZED =
75 "call_failed_bearer_capability_not_authorized";
76 const std::string ResourceUtils::CALL_FAILED_BEARER_CAPABILITY_NOT_PRESENTLY_AVAILABLE =
77 "call_failed_bearer_capability_not_presently_unavailable";
78 const std::string ResourceUtils::CALL_FAILED_SERVICE_OR_OPTION_NOT_AVAILABLE_UNSPECIFIED =
79 "call_failed_service_or_option_not_available_or_unspecified";
80 const std::string ResourceUtils::CALL_FAILED_BEARER_SERVICE_NOT_IMPLEMENTED =
81 "call_failed_bearer_service_not_implemented";
82 const std::string ResourceUtils::CALL_FAILED_ACM_EQUALTO_OR_GREATE_THAN_ACMMAX =
83 "call_failed_acm_equal_to_or_greater_than_acmmax";
84 const std::string ResourceUtils::CALL_FAILED_REQUESTED_FACILITY_NOT_IMPLEMENTED =
85 "call_failed_requested_facility_not_implemented";
86 const std::string ResourceUtils::CALL_FAILED_ONLY_RESTRICTED_DIGITAL_INFO_BEARER_CAPABILITY_IS_AVAILABLE =
87 "call_failed_only_restricted_digital_info_bearer_capability_is_available";
88 const std::string ResourceUtils::CALL_FAILED_SERVICE_OR_OPTION_NOT_IMPLEMENTED_UNSPECIFIED =
89 "call_failed_service_or_option_not_implemented";
90 const std::string ResourceUtils::CALL_FAILED_INVALID_TRANSACTION_IDENTIFIER_VALUE =
91 "call_failed_invalid_transaction_identifier_value";
92 const std::string ResourceUtils::CALL_FAILED_USER_NOT_MEMBER_OF_CUG = "call_failed_user_not_member_of_CUG";
93 const std::string ResourceUtils::CALL_FAILED_INCOMPATIBLE_DESTINATION = "call_failed_incompatible_destination";
94 const std::string ResourceUtils::CALL_FAILED_INVALID_TRANSIT_NETWORK_SELECTION =
95 "call_failed_invalid_transit_network_selection";
96 const std::string ResourceUtils::CALL_FAILED_SEMANTICALLY_INCORRECT_MESSAGE =
97 "call_failed_semantically_incorrect_message";
98 const std::string ResourceUtils::CALL_FAILED_INVALID_MANDATORY_INFORMATION =
99 "call_failed_invalid_mandatory_information";
100 const std::string ResourceUtils::CALL_FAILED_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED =
101 "call_failed_message_type_non_existent_or_not_implemented";
102 const std::string ResourceUtils::CALL_FAILED_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE =
103 "call_failed_message_type_not_compatible_with_protocol_state";
104 const std::string ResourceUtils::CALL_FAILED_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED =
105 "call_failed_information_element_non_existent_or_not_implemented";
106 const std::string ResourceUtils::CALL_FAILED_CONDITIONAL_IE_ERROR = "call_failed_conditional_IE_error";
107 const std::string ResourceUtils::CALL_FAILED_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE =
108 "call_failed_message_not_compatible_with_protocol_state";
109 const std::string ResourceUtils::CALL_FAILED_RECOVERY_ON_TIMER_EXPIRED = "call_failed_recovery_on_timer_expired";
110 const std::string ResourceUtils::CALL_FAILED_PROTOCOL_ERROR_UNSPECIFIED = "call_failed_protocol_error_unspecified";
111 const std::string ResourceUtils::CALL_FAILED_INTERWORKING_UNSPECIFIED = "call_failed_interworking_unspecified";
112 const std::string ResourceUtils::CALL_FAILED_CALL_BARRED = "call_failed_call_barred";
113 const std::string ResourceUtils::CALL_FAILED_FDN_BLOCKED = "call_failed_fdn_blocked";
114 const std::string ResourceUtils::CALL_FAILED_IMSI_UNKNOWN_IN_VLR = "call_failed_imsi_unknow";
115 const std::string ResourceUtils::CALL_FAILED_IMEI_NOT_ACCEPTED = "call_failed_imei_not_accepted";
116 const std::string ResourceUtils::CALL_FAILED_IMEISV_NOT_ACCEPTED = "call_failed_imeisv_not_accepted";
117 const std::string ResourceUtils::CALL_FAILED_DIAL_MODIFIED_TO_USSD = "call_failed_dial_modify_to_ussd";
118 const std::string ResourceUtils::CALL_FAILED_DIAL_MODIFIED_TO_SS = "call_failed_dial_modify_to_ss";
119 const std::string ResourceUtils::CALL_FAILED_DIAL_MODIFIED_TO_DIAL = "call_failed_dial_modify_to_dial";
120 const std::string ResourceUtils::CALL_FAILED_RADIO_OFF = "call_failed_radio_off";
121 const std::string ResourceUtils::CALL_FAILED_OUT_OF_SERVICE = "call_failed_out_of_service";
122 const std::string ResourceUtils::CALL_FAILED_NO_VALID_SIM = "call_failed_no_valid_sim";
123 const std::string ResourceUtils::CALL_FAILED_RADIO_INTERNAL_ERROR = "call_failed_radio_internal_error";
124 const std::string ResourceUtils::CALL_FAILED_NETWORK_RESP_TIMEOUT = "call_failed_network_response_timeout";
125 const std::string ResourceUtils::CALL_FAILED_NETWORK_REJECT = "call_failed_network_reject";
126 const std::string ResourceUtils::CALL_FAILED_RADIO_ACCESS_FAILURE = "call_failed_radio_access_failure";
127 const std::string ResourceUtils::CALL_FAILED_RADIO_LINK_FAILURE = "call_failed_radio_link_failure";
128 const std::string ResourceUtils::CALL_FAILED_RADIO_LINK_LOST = "call_failed_radio_link_lost";
129 const std::string ResourceUtils::CALL_FAILED_RADIO_UPLINK_FAILURE = "call_failed_radio_uplink_failure";
130 const std::string ResourceUtils::CALL_FAILED_RADIO_SETUP_FAILURE = "call_failed_radio_setup_failure";
131 const std::string ResourceUtils::CALL_FAILED_RADIO_RELEASE_NORMAL = "call_failed_radio_release_normal";
132 const std::string ResourceUtils::CALL_FAILED_RADIO_RELEASE_ABNORMAL = "call_failed_radio_release_abnormal";
133 const std::string ResourceUtils::CALL_FAILED_ACCESS_CLASS_BLOCKED = "call_failed_access_class_barring";
134 const std::string ResourceUtils::CALL_FAILED_NETWORK_DETACH = "call_failed_network_detach";
135 const std::string ResourceUtils::CALL_FAILED_INVALID_PARAMETER = "call_failed_invalid_parameter";
136 const std::string ResourceUtils::CALL_FAILED_SIM_NOT_EXIT = "call_failed_sim_not_exit";
137 const std::string ResourceUtils::CALL_FAILED_SIM_PIN_NEED = "call_failed_sim_pin_need";
138 const std::string ResourceUtils::CALL_FAILED_CALL_NOT_ALLOW = "call_failed_call_not_allow";
139 const std::string ResourceUtils::CALL_FAILED_SIM_INVALID = "call_failed_sim_invalid";
140 const std::string ResourceUtils::CALL_FAILED_UNKNOWN = "call_failed_unknow";
141
142 const std::map<std::string, ResourceUtils::ResourceType> ResourceUtils::mapResourceNameType_ = {
143 { ResourceUtils::IS_NOTIFY_USER_RESTRICTIED_CHANGE, ResourceUtils::ResourceType::ResourceTypeBoolean },
144 { ResourceUtils::IS_CS_CAPABLE, ResourceUtils::ResourceType::ResourceTypeBoolean },
145 { ResourceUtils::IS_SWITCH_PHONE_REG_CHANGE, ResourceUtils::ResourceType::ResourceTypeBoolean },
146 { ResourceUtils::SPN_FORMATS, ResourceUtils::ResourceType::ResourceTypeArrayString },
147 { ResourceUtils::EMERGENCY_CALLS_ONLY, ResourceUtils::ResourceType::ResourceTypeString },
148 { ResourceUtils::OUT_OF_SERIVCE, ResourceUtils::ResourceType::ResourceTypeString },
149 { ResourceUtils::CMCC, ResourceUtils::ResourceType::ResourceTypeString },
150 { ResourceUtils::CUCC, ResourceUtils::ResourceType::ResourceTypeString },
151 { ResourceUtils::CTCC, ResourceUtils::ResourceType::ResourceTypeString },
152 { ResourceUtils::CALL_FAILED_UNASSIGNED_NUMBER, ResourceUtils::ResourceType::ResourceTypeString },
153 { ResourceUtils::CALL_FAILED_NO_ROUTE_TO_DESTINATION, ResourceUtils::ResourceType::ResourceTypeString },
154 { ResourceUtils::CALL_FAILED_CHANNEL_UNACCEPTABLE, ResourceUtils::ResourceType::ResourceTypeString },
155 { ResourceUtils::CALL_FAILED_OPERATOR_DETERMINED_BARRING, ResourceUtils::ResourceType::ResourceTypeString },
156 { ResourceUtils::CALL_FAILED_NORMAL_CALL_CLEARING, ResourceUtils::ResourceType::ResourceTypeString },
157 { ResourceUtils::CALL_FAILED_USER_BUSY, ResourceUtils::ResourceType::ResourceTypeString },
158 { ResourceUtils::CALL_FAILED_NO_USER_RESPONDING, ResourceUtils::ResourceType::ResourceTypeString },
159 { ResourceUtils::CALL_FAILED_USER_ALERTING_NO_ANSWER, ResourceUtils::ResourceType::ResourceTypeString },
160 { ResourceUtils::CALL_FAILED_CALL_REJECTED, ResourceUtils::ResourceType::ResourceTypeString },
161 { ResourceUtils::CALL_FAILED_NUMBER_CHANGED, ResourceUtils::ResourceType::ResourceTypeString },
162 { ResourceUtils::CALL_FAILED_CALL_REJECTED_DESTINATION, ResourceUtils::ResourceType::ResourceTypeString },
163 { ResourceUtils::CALL_FAILED_FAILED_PRE_EMPTION, ResourceUtils::ResourceType::ResourceTypeString },
164 { ResourceUtils::CALL_FAILED_NON_SELECTED_USER_CLEARING, ResourceUtils::ResourceType::ResourceTypeString },
165 { ResourceUtils::CALL_FAILED_DESTINATION_OUT_OF_ORDER, ResourceUtils::ResourceType::ResourceTypeString },
166 { ResourceUtils::CALL_FAILED_INVALID_NUMBER_FORMAT, ResourceUtils::ResourceType::ResourceTypeString },
167 { ResourceUtils::CALL_FAILED_FACILITY_REJECTED, ResourceUtils::ResourceType::ResourceTypeString },
168 { ResourceUtils::CALL_FAILED_RESPONSE_TO_STATUS_ENQUIRY, ResourceUtils::ResourceType::ResourceTypeString },
169 { ResourceUtils::CALL_FAILED_NORMAL_UNSPECIFIED, ResourceUtils::ResourceType::ResourceTypeString },
170 { ResourceUtils::CALL_FAILED_NO_CIRCUIT_CHANNEL_AVAILABLE, ResourceUtils::ResourceType::ResourceTypeString },
171 { ResourceUtils::CALL_FAILED_NETWORK_OUT_OF_ORDER, ResourceUtils::ResourceType::ResourceTypeString },
172 { ResourceUtils::CALL_FAILED_TEMPORARY_FAILURE, ResourceUtils::ResourceType::ResourceTypeString },
173 { ResourceUtils::CALL_FAILED_SWITCHING_EQUIPMENT_CONGESTION, ResourceUtils::ResourceType::ResourceTypeString },
174 { ResourceUtils::CALL_FAILED_ACCESS_INFORMATION_DISCARDED, ResourceUtils::ResourceType::ResourceTypeString },
175 { ResourceUtils::CALL_FAILED_REQUEST_CIRCUIT_CHANNEL_NOT_AVAILABLE,
176 ResourceUtils::ResourceType::ResourceTypeString },
177 { ResourceUtils::CALL_FAILED_RESOURCES_UNAVAILABLE_UNSPECIFIED, ResourceUtils::ResourceType::ResourceTypeString },
178 { ResourceUtils::CALL_FAILED_QUALITY_OF_SERVICE_UNAVAILABLE, ResourceUtils::ResourceType::ResourceTypeString },
179 { ResourceUtils::CALL_FAILED_REQUESTED_FACILITY_NOT_SUBSCRIBED, ResourceUtils::ResourceType::ResourceTypeString },
180 { ResourceUtils::CALL_FAILED_INCOMING_CALLS_BARRED_WITHIN_THE_CUG,
181 ResourceUtils::ResourceType::ResourceTypeString },
182 { ResourceUtils::CALL_FAILED_BEARER_CAPABILITY_NOT_AUTHORIZED, ResourceUtils::ResourceType::ResourceTypeString },
183 { ResourceUtils::CALL_FAILED_BEARER_CAPABILITY_NOT_PRESENTLY_AVAILABLE,
184 ResourceUtils::ResourceType::ResourceTypeString },
185 { ResourceUtils::CALL_FAILED_SERVICE_OR_OPTION_NOT_AVAILABLE_UNSPECIFIED,
186 ResourceUtils::ResourceType::ResourceTypeString },
187 { ResourceUtils::CALL_FAILED_BEARER_SERVICE_NOT_IMPLEMENTED, ResourceUtils::ResourceType::ResourceTypeString },
188 { ResourceUtils::CALL_FAILED_ACM_EQUALTO_OR_GREATE_THAN_ACMMAX, ResourceUtils::ResourceType::ResourceTypeString },
189 { ResourceUtils::CALL_FAILED_REQUESTED_FACILITY_NOT_IMPLEMENTED, ResourceUtils::ResourceType::ResourceTypeString },
190 { ResourceUtils::CALL_FAILED_ONLY_RESTRICTED_DIGITAL_INFO_BEARER_CAPABILITY_IS_AVAILABLE,
191 ResourceUtils::ResourceType::ResourceTypeString },
192 { ResourceUtils::CALL_FAILED_SERVICE_OR_OPTION_NOT_IMPLEMENTED_UNSPECIFIED,
193 ResourceUtils::ResourceType::ResourceTypeString },
194 { ResourceUtils::CALL_FAILED_INVALID_TRANSACTION_IDENTIFIER_VALUE,
195 ResourceUtils::ResourceType::ResourceTypeString },
196 { ResourceUtils::CALL_FAILED_USER_NOT_MEMBER_OF_CUG, ResourceUtils::ResourceType::ResourceTypeString },
197 { ResourceUtils::CALL_FAILED_INCOMPATIBLE_DESTINATION, ResourceUtils::ResourceType::ResourceTypeString },
198 { ResourceUtils::CALL_FAILED_INVALID_TRANSIT_NETWORK_SELECTION, ResourceUtils::ResourceType::ResourceTypeString },
199 { ResourceUtils::CALL_FAILED_SEMANTICALLY_INCORRECT_MESSAGE, ResourceUtils::ResourceType::ResourceTypeString },
200 { ResourceUtils::CALL_FAILED_INVALID_MANDATORY_INFORMATION, ResourceUtils::ResourceType::ResourceTypeString },
201 { ResourceUtils::CALL_FAILED_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED,
202 ResourceUtils::ResourceType::ResourceTypeString },
203 { ResourceUtils::CALL_FAILED_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE,
204 ResourceUtils::ResourceType::ResourceTypeString },
205 { ResourceUtils::CALL_FAILED_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED,
206 ResourceUtils::ResourceType::ResourceTypeString },
207 { ResourceUtils::CALL_FAILED_CONDITIONAL_IE_ERROR, ResourceUtils::ResourceType::ResourceTypeString },
208 { ResourceUtils::CALL_FAILED_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE,
209 ResourceUtils::ResourceType::ResourceTypeString },
210 { ResourceUtils::CALL_FAILED_RECOVERY_ON_TIMER_EXPIRED, ResourceUtils::ResourceType::ResourceTypeString },
211 { ResourceUtils::CALL_FAILED_PROTOCOL_ERROR_UNSPECIFIED, ResourceUtils::ResourceType::ResourceTypeString },
212 { ResourceUtils::CALL_FAILED_INTERWORKING_UNSPECIFIED, ResourceUtils::ResourceType::ResourceTypeString },
213 { ResourceUtils::CALL_FAILED_CALL_BARRED, ResourceUtils::ResourceType::ResourceTypeString },
214 { ResourceUtils::CALL_FAILED_FDN_BLOCKED, ResourceUtils::ResourceType::ResourceTypeString },
215 { ResourceUtils::CALL_FAILED_IMSI_UNKNOWN_IN_VLR, ResourceUtils::ResourceType::ResourceTypeString },
216 { ResourceUtils::CALL_FAILED_IMEI_NOT_ACCEPTED, ResourceUtils::ResourceType::ResourceTypeString },
217 { ResourceUtils::CALL_FAILED_IMEISV_NOT_ACCEPTED, ResourceUtils::ResourceType::ResourceTypeString },
218 { ResourceUtils::CALL_FAILED_DIAL_MODIFIED_TO_USSD, ResourceUtils::ResourceType::ResourceTypeString },
219 { ResourceUtils::CALL_FAILED_DIAL_MODIFIED_TO_SS, ResourceUtils::ResourceType::ResourceTypeString },
220 { ResourceUtils::CALL_FAILED_DIAL_MODIFIED_TO_DIAL, ResourceUtils::ResourceType::ResourceTypeString },
221 { ResourceUtils::CALL_FAILED_RADIO_OFF, ResourceUtils::ResourceType::ResourceTypeString },
222 { ResourceUtils::CALL_FAILED_OUT_OF_SERVICE, ResourceUtils::ResourceType::ResourceTypeString },
223 { ResourceUtils::CALL_FAILED_NO_VALID_SIM, ResourceUtils::ResourceType::ResourceTypeString },
224 { ResourceUtils::CALL_FAILED_RADIO_INTERNAL_ERROR, ResourceUtils::ResourceType::ResourceTypeString },
225 { ResourceUtils::CALL_FAILED_NETWORK_RESP_TIMEOUT, ResourceUtils::ResourceType::ResourceTypeString },
226 { ResourceUtils::CALL_FAILED_NETWORK_REJECT, ResourceUtils::ResourceType::ResourceTypeString },
227 { ResourceUtils::CALL_FAILED_RADIO_ACCESS_FAILURE, ResourceUtils::ResourceType::ResourceTypeString },
228 { ResourceUtils::CALL_FAILED_RADIO_LINK_FAILURE, ResourceUtils::ResourceType::ResourceTypeString },
229 { ResourceUtils::CALL_FAILED_RADIO_LINK_LOST, ResourceUtils::ResourceType::ResourceTypeString },
230 { ResourceUtils::CALL_FAILED_RADIO_UPLINK_FAILURE, ResourceUtils::ResourceType::ResourceTypeString },
231 { ResourceUtils::CALL_FAILED_RADIO_SETUP_FAILURE, ResourceUtils::ResourceType::ResourceTypeString },
232 { ResourceUtils::CALL_FAILED_RADIO_RELEASE_NORMAL, ResourceUtils::ResourceType::ResourceTypeString },
233 { ResourceUtils::CALL_FAILED_RADIO_RELEASE_ABNORMAL, ResourceUtils::ResourceType::ResourceTypeString },
234 { ResourceUtils::CALL_FAILED_ACCESS_CLASS_BLOCKED, ResourceUtils::ResourceType::ResourceTypeString },
235 { ResourceUtils::CALL_FAILED_NETWORK_DETACH, ResourceUtils::ResourceType::ResourceTypeString },
236 { ResourceUtils::CALL_FAILED_INVALID_PARAMETER, ResourceUtils::ResourceType::ResourceTypeString },
237 { ResourceUtils::CALL_FAILED_SIM_NOT_EXIT, ResourceUtils::ResourceType::ResourceTypeString },
238 { ResourceUtils::CALL_FAILED_SIM_PIN_NEED, ResourceUtils::ResourceType::ResourceTypeString },
239 { ResourceUtils::CALL_FAILED_CALL_NOT_ALLOW, ResourceUtils::ResourceType::ResourceTypeString },
240 { ResourceUtils::CALL_FAILED_SIM_INVALID, ResourceUtils::ResourceType::ResourceTypeString },
241 { ResourceUtils::CALL_FAILED_UNKNOWN, ResourceUtils::ResourceType::ResourceTypeString },
242 };
243
244 const std::map<int32_t, std::string> ResourceUtils::callFailedResourceName_ = {
245 { DisconnectedReasons::UNASSIGNED_NUMBER, ResourceUtils::CALL_FAILED_UNASSIGNED_NUMBER },
246 { DisconnectedReasons::NO_ROUTE_TO_DESTINATION, ResourceUtils::CALL_FAILED_NO_ROUTE_TO_DESTINATION },
247 { DisconnectedReasons::CHANNEL_UNACCEPTABLE, ResourceUtils::CALL_FAILED_CHANNEL_UNACCEPTABLE },
248 { DisconnectedReasons::OPERATOR_DETERMINED_BARRING, ResourceUtils::CALL_FAILED_OPERATOR_DETERMINED_BARRING },
249 { DisconnectedReasons::NORMAL_CALL_CLEARING, ResourceUtils::CALL_FAILED_NORMAL_CALL_CLEARING },
250 { DisconnectedReasons::FAILED_USER_BUSY, ResourceUtils::CALL_FAILED_USER_BUSY },
251 { DisconnectedReasons::NO_USER_RESPONDING, ResourceUtils::CALL_FAILED_NO_USER_RESPONDING },
252 { DisconnectedReasons::USER_ALERTING_NO_ANSWER, ResourceUtils::CALL_FAILED_USER_ALERTING_NO_ANSWER },
253 { DisconnectedReasons::CALL_REJECTED, ResourceUtils::CALL_FAILED_CALL_REJECTED },
254 { DisconnectedReasons::NUMBER_CHANGED, ResourceUtils::CALL_FAILED_NUMBER_CHANGED },
255 { DisconnectedReasons::CALL_REJECTED_DUE_TO_FEATURE_AT_THE_DESTINATION,
256 ResourceUtils::CALL_FAILED_CALL_REJECTED_DESTINATION },
257 { DisconnectedReasons::FAILED_PRE_EMPTION, ResourceUtils::CALL_FAILED_FAILED_PRE_EMPTION },
258 { DisconnectedReasons::NON_SELECTED_USER_CLEARING, ResourceUtils::CALL_FAILED_NON_SELECTED_USER_CLEARING },
259 { DisconnectedReasons::DESTINATION_OUT_OF_ORDER, ResourceUtils::CALL_FAILED_DESTINATION_OUT_OF_ORDER },
260 { DisconnectedReasons::INVALID_NUMBER_FORMAT, ResourceUtils::CALL_FAILED_INVALID_NUMBER_FORMAT },
261 { DisconnectedReasons::FACILITY_REJECTED, ResourceUtils::CALL_FAILED_FACILITY_REJECTED },
262 { DisconnectedReasons::RESPONSE_TO_STATUS_ENQUIRY, ResourceUtils::CALL_FAILED_RESPONSE_TO_STATUS_ENQUIRY },
263 { DisconnectedReasons::NORMAL_UNSPECIFIED, ResourceUtils::CALL_FAILED_NORMAL_UNSPECIFIED },
264 { DisconnectedReasons::NO_CIRCUIT_CHANNEL_AVAILABLE, ResourceUtils::CALL_FAILED_NO_CIRCUIT_CHANNEL_AVAILABLE },
265 { DisconnectedReasons::NETWORK_OUT_OF_ORDER, ResourceUtils::CALL_FAILED_NETWORK_OUT_OF_ORDER },
266 { DisconnectedReasons::TEMPORARY_FAILURE, ResourceUtils::CALL_FAILED_TEMPORARY_FAILURE },
267 { DisconnectedReasons::SWITCHING_EQUIPMENT_CONGESTION, ResourceUtils::CALL_FAILED_SWITCHING_EQUIPMENT_CONGESTION },
268 { DisconnectedReasons::ACCESS_INFORMATION_DISCARDED, ResourceUtils::CALL_FAILED_ACCESS_INFORMATION_DISCARDED },
269 { DisconnectedReasons::REQUEST_CIRCUIT_CHANNEL_NOT_AVAILABLE,
270 ResourceUtils::CALL_FAILED_REQUEST_CIRCUIT_CHANNEL_NOT_AVAILABLE },
271 { DisconnectedReasons::RESOURCES_UNAVAILABLE_UNSPECIFIED,
272 ResourceUtils::CALL_FAILED_RESOURCES_UNAVAILABLE_UNSPECIFIED },
273 { DisconnectedReasons::QUALITY_OF_SERVICE_UNAVAILABLE, ResourceUtils::CALL_FAILED_QUALITY_OF_SERVICE_UNAVAILABLE },
274 { DisconnectedReasons::REQUESTED_FACILITY_NOT_SUBSCRIBED,
275 ResourceUtils::CALL_FAILED_REQUESTED_FACILITY_NOT_SUBSCRIBED },
276 { DisconnectedReasons::INCOMING_CALLS_BARRED_WITHIN_THE_CUG,
277 ResourceUtils::CALL_FAILED_INCOMING_CALLS_BARRED_WITHIN_THE_CUG },
278 { DisconnectedReasons::BEARER_CAPABILITY_NOT_AUTHORIZED,
279 ResourceUtils::CALL_FAILED_BEARER_CAPABILITY_NOT_AUTHORIZED },
280 { DisconnectedReasons::BEARER_CAPABILITY_NOT_PRESENTLY_AVAILABLE,
281 ResourceUtils::CALL_FAILED_BEARER_CAPABILITY_NOT_PRESENTLY_AVAILABLE },
282 { DisconnectedReasons::SERVICE_OR_OPTION_NOT_AVAILABLE_UNSPECIFIED,
283 ResourceUtils::CALL_FAILED_SERVICE_OR_OPTION_NOT_AVAILABLE_UNSPECIFIED },
284 { DisconnectedReasons::BEARER_SERVICE_NOT_IMPLEMENTED, ResourceUtils::CALL_FAILED_BEARER_SERVICE_NOT_IMPLEMENTED },
285 { DisconnectedReasons::ACM_EQUALTO_OR_GREATE_THAN_ACMMAX,
286 ResourceUtils::CALL_FAILED_ACM_EQUALTO_OR_GREATE_THAN_ACMMAX },
287 { DisconnectedReasons::REQUESTED_FACILITY_NOT_IMPLEMENTED,
288 ResourceUtils::CALL_FAILED_REQUESTED_FACILITY_NOT_IMPLEMENTED },
289 { DisconnectedReasons::ONLY_RESTRICTED_DIGITAL_INFO_BEARER_CAPABILITY_IS_AVAILABLE,
290 ResourceUtils::CALL_FAILED_ONLY_RESTRICTED_DIGITAL_INFO_BEARER_CAPABILITY_IS_AVAILABLE },
291 { DisconnectedReasons::SERVICE_OR_OPTION_NOT_IMPLEMENTED_UNSPECIFIED,
292 ResourceUtils::CALL_FAILED_SERVICE_OR_OPTION_NOT_IMPLEMENTED_UNSPECIFIED },
293 { DisconnectedReasons::INVALID_TRANSACTION_IDENTIFIER_VALUE,
294 ResourceUtils::CALL_FAILED_INVALID_TRANSACTION_IDENTIFIER_VALUE },
295 { DisconnectedReasons::USER_NOT_MEMBER_OF_CUG, ResourceUtils::CALL_FAILED_USER_NOT_MEMBER_OF_CUG },
296 { DisconnectedReasons::INCOMPATIBLE_DESTINATION, ResourceUtils::CALL_FAILED_INCOMPATIBLE_DESTINATION },
297 { DisconnectedReasons::INVALID_TRANSIT_NETWORK_SELECTION,
298 ResourceUtils::CALL_FAILED_INVALID_TRANSIT_NETWORK_SELECTION },
299 { DisconnectedReasons::SEMANTICALLY_INCORRECT_MESSAGE, ResourceUtils::CALL_FAILED_SEMANTICALLY_INCORRECT_MESSAGE },
300 { DisconnectedReasons::INVALID_MANDATORY_INFORMATION, ResourceUtils::CALL_FAILED_INVALID_MANDATORY_INFORMATION },
301 { DisconnectedReasons::MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED,
302 ResourceUtils::CALL_FAILED_MESSAGE_TYPE_NON_EXISTENT_OR_NOT_IMPLEMENTED },
303 { DisconnectedReasons::MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE,
304 ResourceUtils::CALL_FAILED_MESSAGE_TYPE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE },
305 { DisconnectedReasons::INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED,
306 ResourceUtils::CALL_FAILED_INFORMATION_ELEMENT_NON_EXISTENT_OR_NOT_IMPLEMENTED },
307 { DisconnectedReasons::CONDITIONAL_IE_ERROR, ResourceUtils::CALL_FAILED_CONDITIONAL_IE_ERROR },
308 { DisconnectedReasons::MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE,
309 ResourceUtils::CALL_FAILED_MESSAGE_NOT_COMPATIBLE_WITH_PROTOCOL_STATE },
310 { DisconnectedReasons::RECOVERY_ON_TIMER_EXPIRED, ResourceUtils::CALL_FAILED_RECOVERY_ON_TIMER_EXPIRED },
311 { DisconnectedReasons::PROTOCOL_ERROR_UNSPECIFIED, ResourceUtils::CALL_FAILED_PROTOCOL_ERROR_UNSPECIFIED },
312 { DisconnectedReasons::INTERWORKING_UNSPECIFIED, ResourceUtils::CALL_FAILED_INTERWORKING_UNSPECIFIED },
313 { DisconnectedReasons::CALL_BARRED, ResourceUtils::CALL_FAILED_CALL_BARRED },
314 { DisconnectedReasons::FDN_BLOCKED, ResourceUtils::CALL_FAILED_FDN_BLOCKED },
315 { DisconnectedReasons::IMSI_UNKNOWN_IN_VLR, ResourceUtils::CALL_FAILED_IMSI_UNKNOWN_IN_VLR },
316 { DisconnectedReasons::IMEI_NOT_ACCEPTED, ResourceUtils::CALL_FAILED_IMEI_NOT_ACCEPTED },
317 { DisconnectedReasons::IMEISV_NOT_ACCEPTED, ResourceUtils::CALL_FAILED_IMEISV_NOT_ACCEPTED },
318 { DisconnectedReasons::DIAL_MODIFIED_TO_USSD, ResourceUtils::CALL_FAILED_DIAL_MODIFIED_TO_USSD },
319 { DisconnectedReasons::DIAL_MODIFIED_TO_SS, ResourceUtils::CALL_FAILED_DIAL_MODIFIED_TO_SS },
320 { DisconnectedReasons::DIAL_MODIFIED_TO_DIAL, ResourceUtils::CALL_FAILED_DIAL_MODIFIED_TO_DIAL },
321 { DisconnectedReasons::RADIO_OFF, ResourceUtils::CALL_FAILED_RADIO_OFF },
322 { DisconnectedReasons::OUT_OF_SERVICE, ResourceUtils::CALL_FAILED_OUT_OF_SERVICE },
323 { DisconnectedReasons::NO_VALID_SIM, ResourceUtils::CALL_FAILED_NO_VALID_SIM },
324 { DisconnectedReasons::RADIO_INTERNAL_ERROR, ResourceUtils::CALL_FAILED_RADIO_INTERNAL_ERROR },
325 { DisconnectedReasons::NETWORK_RESP_TIMEOUT, ResourceUtils::CALL_FAILED_NETWORK_RESP_TIMEOUT },
326 { DisconnectedReasons::NETWORK_REJECT, ResourceUtils::CALL_FAILED_NETWORK_REJECT },
327 { DisconnectedReasons::RADIO_ACCESS_FAILURE, ResourceUtils::CALL_FAILED_RADIO_ACCESS_FAILURE },
328 { DisconnectedReasons::RADIO_LINK_FAILURE, ResourceUtils::CALL_FAILED_RADIO_LINK_FAILURE },
329 { DisconnectedReasons::RADIO_LINK_LOST, ResourceUtils::CALL_FAILED_RADIO_LINK_LOST },
330 { DisconnectedReasons::RADIO_UPLINK_FAILURE, ResourceUtils::CALL_FAILED_RADIO_UPLINK_FAILURE },
331 { DisconnectedReasons::RADIO_SETUP_FAILURE, ResourceUtils::CALL_FAILED_RADIO_SETUP_FAILURE },
332 { DisconnectedReasons::RADIO_RELEASE_NORMAL, ResourceUtils::CALL_FAILED_RADIO_RELEASE_NORMAL },
333 { DisconnectedReasons::RADIO_RELEASE_ABNORMAL, ResourceUtils::CALL_FAILED_RADIO_RELEASE_ABNORMAL },
334 { DisconnectedReasons::ACCESS_CLASS_BLOCKED, ResourceUtils::CALL_FAILED_ACCESS_CLASS_BLOCKED },
335 { DisconnectedReasons::NETWORK_DETACH, ResourceUtils::CALL_FAILED_NETWORK_DETACH },
336 { DisconnectedReasons::FAILED_INVALID_PARAMETER, ResourceUtils::CALL_FAILED_INVALID_PARAMETER },
337 { DisconnectedReasons::SIM_NOT_EXIT, ResourceUtils::CALL_FAILED_SIM_NOT_EXIT },
338 { DisconnectedReasons::SIM_PIN_NEED, ResourceUtils::CALL_FAILED_SIM_PIN_NEED },
339 { DisconnectedReasons::CALL_NOT_ALLOW, ResourceUtils::CALL_FAILED_CALL_NOT_ALLOW },
340 { DisconnectedReasons::SIM_INVALID, ResourceUtils::CALL_FAILED_SIM_INVALID },
341 { DisconnectedReasons::FAILED_UNKNOWN, ResourceUtils::CALL_FAILED_UNKNOWN },
342 };
343
Get()344 ResourceUtils &ResourceUtils::Get()
345 {
346 static ResourceUtils utils_;
347 if (!utils_.Init()) {
348 TELEPHONY_LOGD("ResourceUtils::Get init failed.");
349 }
350 return utils_;
351 }
352
ResourceUtils()353 ResourceUtils::ResourceUtils()
354 {
355 resourceManager_ = std::unique_ptr<Global::Resource::ResourceManager>(Global::Resource::CreateResourceManager());
356 }
357
Init()358 bool ResourceUtils::Init()
359 {
360 std::lock_guard<std::mutex> locker(mutex_);
361 if (beSourceAdd_) {
362 return true;
363 }
364 if (resourceManager_ == nullptr) {
365 TELEPHONY_LOGE("ResourceUtils Init failed , resourceManager is null.");
366 beSourceAdd_ = false;
367 return false;
368 }
369
370 OHOS::sptr<OHOS::ISystemAbilityManager> systemAbilityManager =
371 OHOS::SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
372 if (systemAbilityManager == nullptr) {
373 TELEPHONY_LOGE("systemAbilityManager is null.");
374 return false;
375 }
376 OHOS::sptr<OHOS::IRemoteObject> remoteObject =
377 systemAbilityManager->GetSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID);
378
379 sptr<AppExecFwk::IBundleMgr> iBundleMgr = OHOS::iface_cast<AppExecFwk::IBundleMgr>(remoteObject);
380 if (iBundleMgr == nullptr) {
381 TELEPHONY_LOGE("iBundleMgr is null.");
382 return false;
383 }
384 AppExecFwk::BundleInfo bundleInfo;
385 iBundleMgr->GetBundleInfo(
386 RESOURCE_HAP_BUNDLE_NAME.c_str(), AppExecFwk::BundleFlag::GET_BUNDLE_DEFAULT, bundleInfo, HAP_USER_ID);
387 std::string hapPath;
388 std::string resPath;
389 if (!bundleInfo.hapModuleInfos.empty()) {
390 hapPath = bundleInfo.hapModuleInfos[0].hapPath;
391 }
392 if (!bundleInfo.moduleResPaths.empty()) {
393 resPath = bundleInfo.moduleResPaths[0];
394 }
395
396 if (IsFileExist(hapPath)) {
397 beSourceAdd_ = resourceManager_->AddResource(hapPath.c_str());
398 TELEPHONY_LOGI(
399 "ResourceUtils add hap path %{public}d", static_cast<int32_t>(beSourceAdd_));
400 } else if (IsFileExist(resPath)) {
401 beSourceAdd_ = resourceManager_->AddResource(resPath.c_str());
402 TELEPHONY_LOGI("ResourceUtils add resource path %{public}d", static_cast<int32_t>(beSourceAdd_));
403 } else {
404 TELEPHONY_LOGE("moduleResPath and moduleHapPath is invalid");
405 }
406
407 if (beSourceAdd_) {
408 SaveAllValue();
409 }
410 return beSourceAdd_;
411 }
412
SaveAllValue()413 void ResourceUtils::SaveAllValue()
414 {
415 std::string strValue;
416 int32_t intValue = 0;
417 bool boolValue = false;
418 std::vector<std::string> strVector;
419 std::vector<int32_t> intVector;
420 for (auto iter : mapResourceNameType_) {
421 switch (iter.second) {
422 case ResourceType::ResourceTypeString:
423 if (GetStringByName(iter.first.c_str(), strValue)) {
424 mapResourceValues_[iter.first] = strValue;
425 TELEPHONY_LOGE("SaveAllValue strValue %{public}s", strValue.c_str());
426 }
427 break;
428 case ResourceType::ResourceTypeInteger:
429 if (GetIntegerByName(iter.first.c_str(), intValue)) {
430 mapResourceValues_[iter.first] = intValue;
431 }
432 break;
433 case ResourceType::ResourceTypeBoolean:
434 if (GetBooleanByName(iter.first.c_str(), boolValue)) {
435 mapResourceValues_[iter.first] = boolValue;
436 }
437 break;
438 case ResourceType::ResourceTypeArrayString:
439 if (GetStringArrayByName(iter.first.c_str(), strVector)) {
440 mapResourceValues_[iter.first] = strVector;
441 }
442 break;
443 case ResourceType::ResourceTypeArrayInteger:
444 if (GetIntArrayByName(iter.first.c_str(), intVector)) {
445 mapResourceValues_[iter.first] = intVector;
446 }
447 break;
448 default:
449 break;
450 }
451 }
452 }
453
GetStringByName(std::string name,std::string & value)454 bool ResourceUtils::GetStringByName(std::string name, std::string &value)
455 {
456 Global::Resource::RState state = resourceManager_->GetStringByName(name.c_str(), value);
457 TELEPHONY_LOGE("GetStringByName name %{public}s", name.c_str());
458 if (state == Global::Resource::RState::SUCCESS) {
459 return true;
460 } else {
461 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
462 return false;
463 }
464 }
465
GetIntegerByName(std::string name,int & value)466 bool ResourceUtils::GetIntegerByName(std::string name, int &value)
467 {
468 Global::Resource::RState state = resourceManager_->GetIntegerByName(name.c_str(), value);
469 if (state == Global::Resource::RState::SUCCESS) {
470 return true;
471 } else {
472 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
473 return false;
474 }
475 }
476
GetBooleanByName(std::string name,bool & value)477 bool ResourceUtils::GetBooleanByName(std::string name, bool &value)
478 {
479 Global::Resource::RState state = resourceManager_->GetBooleanByName(name.c_str(), value);
480 if (state == Global::Resource::RState::SUCCESS) {
481 return true;
482 } else {
483 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
484 return false;
485 }
486 }
487
GetStringArrayByName(std::string name,std::vector<std::string> & value)488 bool ResourceUtils::GetStringArrayByName(std::string name, std::vector<std::string> &value)
489 {
490 value.clear();
491 Global::Resource::RState state = resourceManager_->GetStringArrayByName(name.c_str(), value);
492 if (state == Global::Resource::RState::SUCCESS) {
493 return true;
494 } else {
495 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
496 return false;
497 }
498 }
499
GetIntArrayByName(std::string name,std::vector<int32_t> & value)500 bool ResourceUtils::GetIntArrayByName(std::string name, std::vector<int32_t> &value)
501 {
502 value.clear();
503 Global::Resource::RState state = resourceManager_->GetIntArrayByName(name.c_str(), value);
504 if (state == Global::Resource::RState::SUCCESS) {
505 return true;
506 } else {
507 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
508 return false;
509 }
510 }
511
ShowAllValue()512 void ResourceUtils::ShowAllValue()
513 {
514 std::lock_guard<std::mutex> locker(mutex_);
515 for (auto iter : mapResourceNameType_) {
516 switch (iter.second) {
517 case ResourceType::ResourceTypeString:
518 TELEPHONY_LOGI("resource[%{public}s]:\"%{public}s\"", iter.first.c_str(),
519 std::any_cast<std::string>(mapResourceValues_[iter.first]).c_str());
520 break;
521 case ResourceType::ResourceTypeInteger:
522 TELEPHONY_LOGI("resource[%{public}s]:\"%{public}d\"", iter.first.c_str(),
523 std::any_cast<int32_t>(mapResourceValues_[iter.first]));
524 break;
525 case ResourceType::ResourceTypeBoolean:
526 TELEPHONY_LOGI("resource[%{public}s]:\"%{public}s\"", iter.first.c_str(),
527 std::any_cast<bool>(mapResourceValues_[iter.first]) ? "true" : "false");
528 break;
529 case ResourceType::ResourceTypeArrayString: {
530 std::vector<std::string> &vecString =
531 std::any_cast<std::vector<std::string> &>(mapResourceValues_[iter.first]);
532 for (unsigned int i = 0; i < vecString.size(); i++) {
533 TELEPHONY_LOGI(
534 "resource[%{public}s][%{public}d]:\"%{public}s\"", iter.first.c_str(), i, vecString[i].c_str());
535 }
536 break;
537 }
538 case ResourceType::ResourceTypeArrayInteger: {
539 std::vector<int32_t> &vecInt = std::any_cast<std::vector<int32_t> &>(mapResourceValues_[iter.first]);
540 for (unsigned int i = 0; i < vecInt.size(); i++) {
541 TELEPHONY_LOGI("resource[%{public}s][%{public}d]:\"%{public}d\"", iter.first.c_str(), i, vecInt[i]);
542 }
543 break;
544 }
545 default:
546 break;
547 }
548 }
549 }
550
GetCallFailedMessageName(int32_t reason,std::string & name)551 bool ResourceUtils::GetCallFailedMessageName(int32_t reason, std::string &name)
552 {
553 auto itor = callFailedResourceName_.find(reason);
554 if (itor == callFailedResourceName_.end()) {
555 name = (callFailedResourceName_.find(DisconnectedReasons::FAILED_UNKNOWN))->second;
556 return true;
557 }
558 name = itor->second;
559 return true;
560 }
561
GetStringValueByName(const std::string & name,std::string & value)562 bool ResourceUtils::GetStringValueByName(const std::string &name, std::string &value)
563 {
564 std::lock_guard<std::mutex> locker(mutex_);
565 auto itor = mapResourceValues_.find(name);
566 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
567 return false;
568 }
569 value = std::any_cast<std::string>(itor->second);
570 return true;
571 }
572
IsFileExist(const std::string & filePath)573 bool ResourceUtils::IsFileExist(const std::string &filePath)
574 {
575 struct stat buffer;
576 return (stat(filePath.c_str(), &buffer) == 0);
577 }
578
GetStringArrayValueByName(const std::string & name,std::vector<std::string> & value)579 bool ResourceUtils::GetStringArrayValueByName(const std::string &name, std::vector<std::string> &value)
580 {
581 std::lock_guard<std::mutex> locker(mutex_);
582 auto itor = mapResourceValues_.find(name);
583 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
584 return false;
585 }
586 value = std::any_cast<std::vector<std::string>>(itor->second);
587 return true;
588 }
589
GetBooleanValueByName(const std::string & name,bool & value)590 bool ResourceUtils::GetBooleanValueByName(const std::string &name, bool &value)
591 {
592 std::lock_guard<std::mutex> locker(mutex_);
593 auto itor = mapResourceValues_.find(name);
594 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
595 return false;
596 }
597 value = std::any_cast<bool>(itor->second);
598 return true;
599 }
600
GetIntegerValueByName(const std::string & name,int32_t & value)601 bool ResourceUtils::GetIntegerValueByName(const std::string &name, int32_t &value)
602 {
603 std::lock_guard<std::mutex> locker(mutex_);
604 auto itor = mapResourceValues_.find(name);
605 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
606 return false;
607 }
608 value = std::any_cast<int32_t>(itor->second);
609 return true;
610 }
611
GetIntArrayValueByName(const std::string & name,std::vector<int32_t> & value)612 bool ResourceUtils::GetIntArrayValueByName(const std::string &name, std::vector<int32_t> &value)
613 {
614 std::lock_guard<std::mutex> locker(mutex_);
615 auto itor = mapResourceValues_.find(name);
616 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
617 return false;
618 }
619 value = std::any_cast<std::vector<int32_t>>(itor->second);
620 return true;
621 }
622 } // namespace Telephony
623 } // namespace OHOS
624