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_ =
356 std::unique_ptr<Global::Resource::ResourceManager>(Global::Resource::CreateResourceManager(false));
357 }
358
Init()359 bool ResourceUtils::Init()
360 {
361 std::lock_guard<std::mutex> locker(mutex_);
362 if (beSourceAdd_) {
363 return true;
364 }
365 if (resourceManager_ == nullptr) {
366 TELEPHONY_LOGE("ResourceUtils Init failed , resourceManager is null.");
367 beSourceAdd_ = false;
368 return false;
369 }
370
371 OHOS::sptr<OHOS::ISystemAbilityManager> systemAbilityManager =
372 OHOS::SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
373 if (systemAbilityManager == nullptr) {
374 TELEPHONY_LOGE("systemAbilityManager is null.");
375 return false;
376 }
377 OHOS::sptr<OHOS::IRemoteObject> remoteObject =
378 systemAbilityManager->CheckSystemAbility(BUNDLE_MGR_SERVICE_SYS_ABILITY_ID);
379
380 sptr<AppExecFwk::IBundleMgr> iBundleMgr = OHOS::iface_cast<AppExecFwk::IBundleMgr>(remoteObject);
381 if (iBundleMgr == nullptr) {
382 TELEPHONY_LOGE("iBundleMgr is null.");
383 return false;
384 }
385 AppExecFwk::BundleInfo bundleInfo;
386 iBundleMgr->GetBundleInfo(
387 RESOURCE_HAP_BUNDLE_NAME.c_str(), AppExecFwk::BundleFlag::GET_BUNDLE_DEFAULT, bundleInfo, HAP_USER_ID);
388 std::string hapPath;
389 std::string resPath;
390 if (!bundleInfo.hapModuleInfos.empty()) {
391 hapPath = bundleInfo.hapModuleInfos[0].hapPath;
392 }
393 if (!bundleInfo.moduleResPaths.empty()) {
394 resPath = bundleInfo.moduleResPaths[0];
395 }
396
397 if (IsFileExist(hapPath)) {
398 beSourceAdd_ = resourceManager_->AddResource(hapPath.c_str());
399 TELEPHONY_LOGI(
400 "ResourceUtils add hap path %{public}d", static_cast<int32_t>(beSourceAdd_));
401 } else if (IsFileExist(resPath)) {
402 beSourceAdd_ = resourceManager_->AddResource(resPath.c_str());
403 TELEPHONY_LOGI("ResourceUtils add resource path %{public}d", static_cast<int32_t>(beSourceAdd_));
404 } else {
405 TELEPHONY_LOGE("moduleResPath and moduleHapPath is invalid");
406 }
407
408 if (beSourceAdd_) {
409 SaveAllValue();
410 }
411 return beSourceAdd_;
412 }
413
SaveAllValue()414 void ResourceUtils::SaveAllValue()
415 {
416 std::string strValue;
417 int32_t intValue = 0;
418 bool boolValue = false;
419 std::vector<std::string> strVector;
420 std::vector<int32_t> intVector;
421 for (auto iter : mapResourceNameType_) {
422 switch (iter.second) {
423 case ResourceType::ResourceTypeString:
424 if (GetStringByName(iter.first.c_str(), strValue)) {
425 mapResourceValues_[iter.first] = strValue;
426 TELEPHONY_LOGE("SaveAllValue strValue %{public}s", strValue.c_str());
427 }
428 break;
429 case ResourceType::ResourceTypeInteger:
430 if (GetIntegerByName(iter.first.c_str(), intValue)) {
431 mapResourceValues_[iter.first] = intValue;
432 }
433 break;
434 case ResourceType::ResourceTypeBoolean:
435 if (GetBooleanByName(iter.first.c_str(), boolValue)) {
436 mapResourceValues_[iter.first] = boolValue;
437 }
438 break;
439 case ResourceType::ResourceTypeArrayString:
440 if (GetStringArrayByName(iter.first.c_str(), strVector)) {
441 mapResourceValues_[iter.first] = strVector;
442 }
443 break;
444 case ResourceType::ResourceTypeArrayInteger:
445 if (GetIntArrayByName(iter.first.c_str(), intVector)) {
446 mapResourceValues_[iter.first] = intVector;
447 }
448 break;
449 default:
450 break;
451 }
452 }
453 }
454
GetStringByName(std::string name,std::string & value)455 bool ResourceUtils::GetStringByName(std::string name, std::string &value)
456 {
457 Global::Resource::RState state = resourceManager_->GetStringByName(name.c_str(), value);
458 TELEPHONY_LOGE("GetStringByName name %{public}s", name.c_str());
459 if (state == Global::Resource::RState::SUCCESS) {
460 return true;
461 } else {
462 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
463 return false;
464 }
465 }
466
GetIntegerByName(std::string name,int & value)467 bool ResourceUtils::GetIntegerByName(std::string name, int &value)
468 {
469 Global::Resource::RState state = resourceManager_->GetIntegerByName(name.c_str(), value);
470 if (state == Global::Resource::RState::SUCCESS) {
471 return true;
472 } else {
473 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
474 return false;
475 }
476 }
477
GetBooleanByName(std::string name,bool & value)478 bool ResourceUtils::GetBooleanByName(std::string name, bool &value)
479 {
480 Global::Resource::RState state = resourceManager_->GetBooleanByName(name.c_str(), value);
481 if (state == Global::Resource::RState::SUCCESS) {
482 return true;
483 } else {
484 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
485 return false;
486 }
487 }
488
GetStringArrayByName(std::string name,std::vector<std::string> & value)489 bool ResourceUtils::GetStringArrayByName(std::string name, std::vector<std::string> &value)
490 {
491 value.clear();
492 Global::Resource::RState state = resourceManager_->GetStringArrayByName(name.c_str(), value);
493 if (state == Global::Resource::RState::SUCCESS) {
494 return true;
495 } else {
496 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
497 return false;
498 }
499 }
500
GetIntArrayByName(std::string name,std::vector<int32_t> & value)501 bool ResourceUtils::GetIntArrayByName(std::string name, std::vector<int32_t> &value)
502 {
503 value.clear();
504 Global::Resource::RState state = resourceManager_->GetIntArrayByName(name.c_str(), value);
505 if (state == Global::Resource::RState::SUCCESS) {
506 return true;
507 } else {
508 TELEPHONY_LOGE("failed to get resource by name %{public}s", name.c_str());
509 return false;
510 }
511 }
512
ShowAllValue()513 void ResourceUtils::ShowAllValue()
514 {
515 std::lock_guard<std::mutex> locker(mutex_);
516 for (auto iter : mapResourceNameType_) {
517 switch (iter.second) {
518 case ResourceType::ResourceTypeString:
519 TELEPHONY_LOGI("resource[%{public}s]:\"%{public}s\"", iter.first.c_str(),
520 std::any_cast<std::string>(mapResourceValues_[iter.first]).c_str());
521 break;
522 case ResourceType::ResourceTypeInteger:
523 TELEPHONY_LOGI("resource[%{public}s]:\"%{public}d\"", iter.first.c_str(),
524 std::any_cast<int32_t>(mapResourceValues_[iter.first]));
525 break;
526 case ResourceType::ResourceTypeBoolean:
527 TELEPHONY_LOGI("resource[%{public}s]:\"%{public}s\"", iter.first.c_str(),
528 std::any_cast<bool>(mapResourceValues_[iter.first]) ? "true" : "false");
529 break;
530 case ResourceType::ResourceTypeArrayString: {
531 std::vector<std::string> &vecString =
532 std::any_cast<std::vector<std::string> &>(mapResourceValues_[iter.first]);
533 for (unsigned int i = 0; i < vecString.size(); i++) {
534 TELEPHONY_LOGI(
535 "resource[%{public}s][%{public}d]:\"%{public}s\"", iter.first.c_str(), i, vecString[i].c_str());
536 }
537 break;
538 }
539 case ResourceType::ResourceTypeArrayInteger: {
540 std::vector<int32_t> &vecInt = std::any_cast<std::vector<int32_t> &>(mapResourceValues_[iter.first]);
541 for (unsigned int i = 0; i < vecInt.size(); i++) {
542 TELEPHONY_LOGI("resource[%{public}s][%{public}d]:\"%{public}d\"", iter.first.c_str(), i, vecInt[i]);
543 }
544 break;
545 }
546 default:
547 break;
548 }
549 }
550 }
551
GetCallFailedMessageName(int32_t reason,std::string & name)552 bool ResourceUtils::GetCallFailedMessageName(int32_t reason, std::string &name)
553 {
554 auto itor = callFailedResourceName_.find(reason);
555 if (itor == callFailedResourceName_.end()) {
556 name = (callFailedResourceName_.find(DisconnectedReasons::FAILED_UNKNOWN))->second;
557 return true;
558 }
559 name = itor->second;
560 return true;
561 }
562
GetStringValueByName(const std::string & name,std::string & value)563 bool ResourceUtils::GetStringValueByName(const std::string &name, std::string &value)
564 {
565 std::lock_guard<std::mutex> locker(mutex_);
566 auto itor = mapResourceValues_.find(name);
567 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
568 return false;
569 }
570 value = std::any_cast<std::string>(itor->second);
571 return true;
572 }
573
IsFileExist(const std::string & filePath)574 bool ResourceUtils::IsFileExist(const std::string &filePath)
575 {
576 struct stat buffer;
577 return (stat(filePath.c_str(), &buffer) == 0);
578 }
579
GetStringArrayValueByName(const std::string & name,std::vector<std::string> & value)580 bool ResourceUtils::GetStringArrayValueByName(const std::string &name, std::vector<std::string> &value)
581 {
582 std::lock_guard<std::mutex> locker(mutex_);
583 auto itor = mapResourceValues_.find(name);
584 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
585 return false;
586 }
587 value = std::any_cast<std::vector<std::string>>(itor->second);
588 return true;
589 }
590
GetBooleanValueByName(const std::string & name,bool & value)591 bool ResourceUtils::GetBooleanValueByName(const std::string &name, bool &value)
592 {
593 std::lock_guard<std::mutex> locker(mutex_);
594 auto itor = mapResourceValues_.find(name);
595 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
596 return false;
597 }
598 value = std::any_cast<bool>(itor->second);
599 return true;
600 }
601
GetIntegerValueByName(const std::string & name,int32_t & value)602 bool ResourceUtils::GetIntegerValueByName(const std::string &name, int32_t &value)
603 {
604 std::lock_guard<std::mutex> locker(mutex_);
605 auto itor = mapResourceValues_.find(name);
606 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
607 return false;
608 }
609 value = std::any_cast<int32_t>(itor->second);
610 return true;
611 }
612
GetIntArrayValueByName(const std::string & name,std::vector<int32_t> & value)613 bool ResourceUtils::GetIntArrayValueByName(const std::string &name, std::vector<int32_t> &value)
614 {
615 std::lock_guard<std::mutex> locker(mutex_);
616 auto itor = mapResourceValues_.find(name);
617 if (itor == mapResourceValues_.end() || !itor->second.has_value()) {
618 return false;
619 }
620 value = std::any_cast<std::vector<int32_t>>(itor->second);
621 return true;
622 }
623 } // namespace Telephony
624 } // namespace OHOS
625