2 * Copyright (c) 2011 - 2016 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #ifndef __TIZEN_APPFW_APP_INFO_H
19 #define __TIZEN_APPFW_APP_INFO_H
32 * @addtogroup CAPI_APP_INFO_MODULE
37 * @brief Definition for string property for filtering based on app info: String property for filtering packages with app id
38 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
40 #define PACKAGE_INFO_PROP_APP_ID "PACKAGE_INFO_PROP_APP_ID"
43 * @brief Definition for string property for filtering based on app info: String property for filtering packages with app type
44 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
46 #define PACKAGE_INFO_PROP_APP_TYPE "PACKAGE_INFO_PROP_APP_TYPE"
49 * @brief Definition for string property for filtering based on app info: String property for filtering packages with app category
50 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
52 #define PACKAGE_INFO_PROP_APP_CATEGORY "PACKAGE_INFO_PROP_APP_CATEGORY"
55 * @brief Definition for string property for filtering based on app info: String property for filtering packages with installed storage of app
56 * Value related with this property should be "installed_internal" or "installed_external"
59 #define PACKAGE_INFO_PROP_APP_INSTALLED_STORAGE "PACKAGE_INFO_PROP_APP_INSTALLED_STORAGE"
62 * @brief Definition for boolean property for filtering based on app info: Boolean property for filtering whether the package is nodisplay or not based on package info
63 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
65 #define PACKAGE_INFO_PROP_APP_NODISPLAY "PACKAGE_INFO_PROP_APP_NODISPLAY"
68 * @brief Definition for boolean property for filtering based on app info: Boolean property for filtering whether the package has the authority to manage task or not based on package info
69 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
71 #define PACKAGE_INFO_PROP_APP_TASKMANAGE "PACKAGE_INFO_PROP_APP_TASKMANAGE"
74 * @brief Definition for boolean property for filtering based on app info: Boolean property for filtering whether the application has been disabled
77 #define PACKAGE_INFO_PROP_APP_DISABLED "PACKAGE_INFO_PROP_APP_DISABLED"
80 * @brief Definition for string property for filtering based on app info: String property for
81 * filtering with the application component type.
82 * Value related with this property should be one of "uiapp", "svcapp", "widgetapp"
85 * @see app_info_app_component_e
86 * @see app_info_get_app_component_type()
88 #define PACKAGE_INFO_PROP_APP_COMPONENT_TYPE "PACKAGE_INFO_PROP_APP_COMPONENT_TYPE"
91 * @brief Enumeration for application component type.
93 * @details A component is an application considered as a part of a package.
94 * The application component type indicates what type of
95 * a component an application is in a package.
96 * @see PACKAGE_INFO_PROP_APP_COMPONENT_TYPE
97 * @see app_info_get_app_component_type()
100 APP_INFO_APP_COMPONENT_TYPE_UI_APP, /**< UI application */
101 APP_INFO_APP_COMPONENT_TYPE_SERVICE_APP, /**< Service application */
102 APP_INFO_APP_COMPONENT_TYPE_WIDGET_APP, /**< Widget application */
103 APP_INFO_APP_COMPONENT_TYPE_WATCH_APP, /**< Watch application */
104 } app_info_app_component_type_e;
107 * @brief Application information handle.
108 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
110 typedef struct app_info_s *app_info_h;
113 * @brief Application filter handle.
114 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
116 typedef struct app_info_filter_s *app_info_filter_h;
119 * @brief Application metadata filter handle.
120 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
122 typedef struct app_info_metadata_filter_s *app_info_metadata_filter_h;
125 * @brief Called to get the application information once for each installed application.
126 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
127 * @param[in] app_info The application information of each installed application
128 * @param[in] user_data The user data passed from the foreach function
129 * @return @c true to continue with the next iteration of the loop, \n
130 * otherwise @c false to break out of the loop
131 * @pre app_manager_foreach_app_info() will invoke this callback.
132 * @see app_manager_foreach_app_info()
134 typedef bool (*app_info_filter_cb) (app_info_h app_info, void *user_data);
137 * @brief Called to get application metadata in app_info_foreach_metadata().
138 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
139 * @param[in] metadata_name The name of the metadata
140 * @param[in] metadata_value The value of the metadata
141 * @param[in] user_data The user data passed to app_info_foreach_metadata()
142 * @return @c true to continue with the next iteration of the loop, \n
143 * otherwise @c false to break out of the loop
144 * @pre app_info_foreach_metadata() will invoke this callback.
145 * @see app_info_foreach_metadata()
147 typedef bool (*app_info_metadata_cb) (const char *metadata_key, const char *metadata_value, void *user_data);
150 * @brief Called for each application category in app_info_foreach_category().
152 * @remarks @a category will be freed when the application information handle is destroyed
153 * using app_info_destroy()
154 * @param[in] category The name of the category
155 * @param[in] user_data The user data passed to app_info_foreach_category()
156 * @return @c true to continue with the next iteration of the loop, \n
157 * otherwise @c false to break out of the loop
158 * @pre app_info_foreach_category() will invoke this callback.
159 * @see app_info_foreach_category()
161 typedef bool (*app_info_category_cb) (const char *category, void *user_data);
164 * @brief Creates the application information handle.
165 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
166 * @param[in] app_id The application ID
167 * @param[out] app_info The application information handle
168 * @return @c 0 on success,
169 * otherwise a negative error value
170 * @retval #APP_MANAGER_ERROR_NONE Successful
171 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
172 * @retval #APP_MANAGER_ERROR_NO_SUCH_APP The app is not installed
173 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
174 * @see app_manager_foreach_app_info()
175 * @see app_manager_get_app_info()
177 int app_info_create(const char *app_id, app_info_h *app_info);
180 * @brief Destroys the application information handle and releases all its resources.
181 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
182 * @param[in] app_info The application information handle
183 * @return @c 0 on success,
184 * otherwise a negative error value
185 * @retval #APP_MANAGER_ERROR_NONE Successful
186 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
187 * @see app_manager_foreach_app_info()
188 * @see app_manager_get_app_info()
190 int app_info_destroy(app_info_h app_info);
193 * @brief Gets the application ID with the given application context.
194 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
195 * @remarks You must release @a app_id using free().
196 * @param[in] app_info The application information
197 * @param[out] app_id The application ID of the given application context
198 * @return @c 0 on success,
199 * otherwise a negative error value
200 * @retval #APP_MANAGER_ERROR_NONE Successful
201 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
202 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
204 int app_info_get_app_id(app_info_h app_info, char **app_id);
207 * @brief Gets the executable path of the application
208 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
209 * @remarks You must release @a exec path using free().
210 * @param[in] app_info The application information
211 * @param[out] exec The executable path of the application
212 * @return @c 0 on success,
213 * otherwise a negative error value
214 * @retval #APP_MANAGER_ERROR_NONE Successful
215 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
216 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
218 int app_info_get_exec(app_info_h app_info, char **exec);
221 * @brief Gets the label of the application.
222 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
223 * @remarks You must release @a label using free().
224 * @param[in] app_info The application information
225 * @param[out] label The label of the application
226 * @return @c 0 on success,
227 * otherwise a negative error value
228 * @retval #APP_MANAGER_ERROR_NONE Successful
229 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
230 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
232 int app_info_get_label(app_info_h app_info, char **label);
235 * @brief Gets the localed name of the application.
236 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
237 * @remarks You must release localed name using free().
238 * @param[in] app_id The application ID
239 * @param[in] locale The locale information
240 * @param[out] label The localed name of the application
241 * @return @c 0 on success,
242 * otherwise a negative error value
243 * @retval #APP_MANAGER_ERROR_NONE Successful
244 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
245 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
247 int app_info_get_localed_label(const char *app_id, const char *locale, char **label);
250 * @brief Gets the absolute path to the icon image.
251 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
252 * @remarks You must release @a path using free().
253 * @param[in] app_info The application information
254 * @param[out] path The absolute path to the icon
255 * @return @c 0 on success,
256 * otherwise a negative error value
257 * @retval #APP_MANAGER_ERROR_NONE Successful
258 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
259 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
261 int app_info_get_icon(app_info_h app_info, char **path);
264 * @brief Gets the package name.
265 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
266 * @remarks You must release @a package name using free().
267 * @param[in] app_info The application information
268 * @param[out] package The package name
269 * @return @c 0 on success,
270 * otherwise a negative error value
271 * @retval #APP_MANAGER_ERROR_NONE Successful
272 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
273 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
275 int app_info_get_package(app_info_h app_info, char **package);
278 * @brief Gets the package type name.
279 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
280 * @remarks You must release package @a type name using free().
281 * @param[in] app_info The application information
282 * @param[out] type The package type
283 * @return @c 0 on success,
284 * otherwise a negative error value
285 * @retval #APP_MANAGER_ERROR_NONE Successful
286 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
287 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
289 int app_info_get_type(app_info_h app_info, char **type);
292 * @brief Gets the application component type.
294 * @param[in] app_info The application information
295 * @param[out] component The application component type
296 * @return @c 0 on success,
297 * otherwise a negative error value
298 * @retval #APP_MANAGER_ERROR_NONE Successful
299 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
300 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
301 * @see PACKAGE_INFO_PROP_APP_COMPONENT_TYPE
302 * @see app_info_app_component_type_e
304 int app_info_get_app_component_type(app_info_h app_info, app_info_app_component_type_e *type);
307 * @brief Gets the list of metadata for a particular application.
308 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
309 * @param[in] app_info The application information
310 * @param[in] callback The callback function for list
311 * @param[in] user_data The user data to be passed to callback function
312 * @return @c 0 on success,
313 * otherwise a negative error value
314 * @retval #APP_MANAGER_ERROR_NONE Successful
315 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
316 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
318 int app_info_foreach_metadata(app_info_h app_info, app_info_metadata_cb callback, void *user_data);
321 * @brief Checks whether application information is nodisplay.
322 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
323 * @param[in] app_info The application information
324 * @param[out] nodisplay @c true if the application is nodisplay, \n
326 * @return @c 0 on success,
327 * otherwise a negative error value
328 * @retval #APP_MANAGER_ERROR_NONE Successful
329 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
331 int app_info_is_nodisplay(app_info_h app_info, bool *nodisplay);
334 * @brief Checks whether two application information are equal.
335 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
336 * @param[in] lhs The first application information to compare
337 * @param[in] rhs The second application information to compare
338 * @param[out] equal @c true if the application information are equal, \n
340 * @return @c 0 on success,
341 * otherwise a negative error value
342 * @retval #APP_MANAGER_ERROR_NONE Successful
343 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
345 int app_info_is_equal(app_info_h lhs, app_info_h rhs, bool *equal);
348 * @brief Checks whether application is enabled.
349 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
350 * @param[in] app_info The application information
351 * @param[out] enabled @c true if the application is enabled, \n
353 * @return @c 0 on success,
354 * otherwise a negative error value
355 * @retval #APP_MANAGER_ERROR_NONE Successful
356 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
358 int app_info_is_enabled(app_info_h app_info, bool *enabled);
361 * @brief Checks whether application is launched on booting time.
362 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
363 * @param[in] app_info The application information
364 * @param[out] onboot @c true if the application is launched on booting time, \n
366 * @return @c 0 on success,
367 * otherwise a negative error value
368 * @retval #APP_MANAGER_ERROR_NONE Successful
369 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
371 int app_info_is_onboot(app_info_h app_info, bool *onboot);
374 * @brief Checks whether application is preloaded.
375 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
376 * @param[in] app_info The application information
377 * @param[out] preload @c true if the application is preloaded, \n
379 * @return @c 0 on success,
380 * otherwise a negative error value
381 * @retval #APP_MANAGER_ERROR_NONE Successful
382 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
384 int app_info_is_preload(app_info_h app_info, bool *preload);
387 * @brief Clones the application information handle.
388 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
389 * @param[out] clone A newly created application information handle, if successfully cloned
390 * @param[in] app_info The application information
391 * @return @c 0 on success,
392 * otherwise a negative error value
393 * @retval #APP_MANAGER_ERROR_NONE Successful
394 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
395 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
396 * @retval #APP_MANAGER_ERROR_NO_SUCH_APP The app is not installed
398 int app_info_clone(app_info_h *clone, app_info_h app_info);
402 * @brief Runs a callback for each category which the given application belongs to.
404 * @privlevel platform
405 * @privilege %http://tizen.org/privilege/packagemanager.admin
406 * @param[in] app_info The application information
407 * @param[in] callback The callback function
408 * @param[in] user_data The user data to be passed to the callback function
409 * @return @c 0 on success,
410 * otherwise a negative error value
411 * @retval #APP_MANAGER_ERROR_NONE Successful
412 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
413 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
414 * @retval #APP_MANAGER_ERROR_PERMISSION_DENIED Permission denied
415 * @see app_info_create()
417 int app_info_foreach_category(app_info_h app_info, app_info_category_cb callback, void *user_data);
420 * @brief Creates the application information filter handle from DB.
421 * All filter properties will be ANDed.
422 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
423 * @param[out] handle The pointer to the application info filter handle
424 * @return @c 0 on success,
425 * otherwise a negative error value
426 * @retval #APP_MANAGER_ERROR_NONE Successful
427 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
428 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
429 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
431 int app_info_filter_create(app_info_filter_h *handle);
434 * @brief Destroys the application information filter handle, freeing up all the resources.
435 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
436 * @param[in] handle The pointer to the application info filter handle
437 * @return @c 0 on success,
438 * otherwise a negative error value
439 * @retval #APP_MANAGER_ERROR_NONE Successful
440 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
441 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
443 int app_info_filter_destroy(app_info_filter_h handle);
446 * @brief Adds a boolean filter property to the filter handle.
447 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
448 * @param[in] handle The pointer to the application info filter handle
449 * @param[in] property The integer property name
450 * @param[in] value The value corresponding to the property
451 * @return @c 0 on success,
452 * otherwise a negative error value
453 * @retval #APP_MANAGER_ERROR_NONE Successful
454 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
455 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
457 int app_info_filter_add_bool(app_info_filter_h handle, const char *property, const bool value);
460 * @brief Adds a string filter property to the filter handle.
461 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
462 * @param[in] handle The pointer to the application info filter handle
463 * @param[in] property The integer property name
464 * @param[in] value The value corresponding to the property
465 * @return @c 0 on success,
466 * otherwise a negative error value
467 * @retval #APP_MANAGER_ERROR_NONE Successful
468 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
469 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
471 int app_info_filter_add_string(app_info_filter_h handle, const char *property, const char *value);
474 * @brief Gets the count of filtered apps.
475 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
476 * @param[in] handle The pointer to the application info filter handle
477 * @param[out] count The pointer to the variable for count
478 * @return @c 0 on success,
479 * otherwise a negative error value
480 * @retval #APP_MANAGER_ERROR_NONE Successful
481 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
482 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
484 int app_info_filter_count_appinfo(app_info_filter_h handle, int *count);
487 * @brief Executes the user supplied callback function for each application that satisfy the filter conditions.
488 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
489 * @param[in] handle The pointer to the application info filter handle
490 * @param[in] callback The callback function
491 * @param[in] user_data The user data to be passed to the callback function
492 * @return @c 0 on success,
493 * otherwise a negative error value
494 * @retval #APP_MANAGER_ERROR_NONE Successful
495 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
496 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
498 int app_info_filter_foreach_appinfo(app_info_filter_h handle, app_info_filter_cb callback, void *user_data);
501 * @brief Creates the application's metadata information filter handle from DB.
502 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
503 * @param[out] handle The pointer to the application metadata info filter handle
504 * @return @c 0 on success,
505 * otherwise a negative error value
506 * @retval #APP_MANAGER_ERROR_NONE Successful
507 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
508 * @retval #APP_MANAGER_ERROR_OUT_OF_MEMORY Out of memory
509 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
511 int app_info_metadata_filter_create(app_info_metadata_filter_h *handle);
514 * @brief Destroys the application's metadata information filter handle.
515 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
516 * @param[in] handle The pointer to the application info filter handle
517 * @return @c 0 on success,
518 * otherwise a negative error value
519 * @retval #APP_MANAGER_ERROR_NONE Successful
520 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
521 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
523 int app_info_metadata_filter_destroy(app_info_metadata_filter_h handle);
526 * @brief Adds filter condition for the query API.
527 * @details The query will search the entire application metadata information collected from
528 * the manifest file of all the installed packages. You can specify value as @c NULL to search based on key only.
529 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
530 * @param[in] handle The pointer to the application metadata info filter handle
531 * @param[in] key The pointer to metadata key
532 * @param[in] value The pointer to metadata value
533 * @return @c 0 on success,
534 * otherwise a negative error value
535 * @retval #APP_MANAGER_ERROR_NONE Successful
536 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
537 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
539 int app_info_metadata_filter_add(app_info_metadata_filter_h handle, const char *key, const char *value);
542 * @brief Executes the filter query.
543 * @details The query will search the entire application metadata information collected from
544 * the manifest file of all the installed packages. For each application returned by the query, the callback will be called. If callback returns
545 * negative value, no more callbacks will be called and API will return.
546 * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
547 * @param[in] handle The pointer to the application metadata info filter handle
548 * @param[in] callback The function pointer to callback
549 * @param[in] user_data The pointer to user data
550 * @return @c 0 on success,
551 * otherwise a negative error value
552 * @retval #APP_MANAGER_ERROR_NONE Successful
553 * @retval #APP_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
554 * @retval #APP_MANAGER_ERROR_IO_ERROR I/O error
556 int app_info_metadata_filter_foreach(app_info_metadata_filter_h handle, app_info_filter_cb callback, void *user_data);
567 #endif /* __TIZEN_APPFW_APP_INFO_H */