Add Tizen.Application.ApplicationManager
authorsung-su.kim <sung-su.kim@samsung.com>
Fri, 18 Mar 2016 07:37:51 +0000 (16:37 +0900)
committerjh5.cho <jh5.cho@samsung.com>
Thu, 24 Mar 2016 08:04:25 +0000 (17:04 +0900)
Change-Id: Icc645926bceeb97f4781be0f3e1cd058f17eea3b

18 files changed:
.gitignore [changed mode: 0644->0755]
AppFW.sln [new file with mode: 0755]
AppFW.v12.suo [new file with mode: 0755]
Tizen.Applications/Interop/Interop.ApplicationManager.cs [new file with mode: 0755]
Tizen.Applications/Interop/Interop.Libraries.cs
Tizen.Applications/Tizen.Applications.csproj
Tizen.Applications/Tizen.Applications.csproj.user
Tizen.Applications/Tizen.Applications/ApplicationChangedEventArgs.cs [new file with mode: 0755]
Tizen.Applications/Tizen.Applications/ApplicationManager.cs [new file with mode: 0755]
Tizen.Applications/Tizen.Applications/ApplicationManagerEvent.cs [new file with mode: 0755]
Tizen.Applications/Tizen.Applications/ApplicationManagerFilter.cs [new file with mode: 0755]
Tizen.Applications/Tizen.Applications/ApplicationManagerImpl.cs [new file with mode: 0755]
Tizen.Applications/Tizen.Applications/Bundle.cs
Tizen.Applications/Tizen.Applications/InstalledApplication.cs [new file with mode: 0755]
Tizen.Applications/Tizen.Applications/RunningApplication.cs [new file with mode: 0755]
packaging/csapi-application.manifest [changed mode: 0644->0755]
packaging/csapi-application.pc.in [changed mode: 0644->0755]
packaging/csapi-application.spec [changed mode: 0644->0755]

old mode 100644 (file)
new mode 100755 (executable)
diff --git a/AppFW.sln b/AppFW.sln
new file mode 100755 (executable)
index 0000000..ff0c3b2
--- /dev/null
+++ b/AppFW.sln
@@ -0,0 +1,40 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.24720.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tizen.Applications", "Tizen.Applications\Tizen.Applications.csproj", "{663C5A3D-E631-4987-AEE7-F498C56A40FC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tizen", "..\tizen\Tizen\Tizen.csproj", "{7659CA59-410D-41A1-9841-586E88BC78C9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tizen.Internals", "..\tizen\Tizen.Internals\Tizen.Internals.csproj", "{B9AA1CB2-F72D-4A30-A33B-A20C850A38A0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test", "Test\Test.csproj", "{296FB4FC-D152-45AF-99BF-09CC7A212262}"
+EndProject
+Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+               Debug|Any CPU = Debug|Any CPU
+               Release|Any CPU = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(ProjectConfigurationPlatforms) = postSolution
+               {663C5A3D-E631-4987-AEE7-F498C56A40FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {663C5A3D-E631-4987-AEE7-F498C56A40FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {663C5A3D-E631-4987-AEE7-F498C56A40FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {663C5A3D-E631-4987-AEE7-F498C56A40FC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7659CA59-410D-41A1-9841-586E88BC78C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7659CA59-410D-41A1-9841-586E88BC78C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7659CA59-410D-41A1-9841-586E88BC78C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7659CA59-410D-41A1-9841-586E88BC78C9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B9AA1CB2-F72D-4A30-A33B-A20C850A38A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B9AA1CB2-F72D-4A30-A33B-A20C850A38A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B9AA1CB2-F72D-4A30-A33B-A20C850A38A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B9AA1CB2-F72D-4A30-A33B-A20C850A38A0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {296FB4FC-D152-45AF-99BF-09CC7A212262}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {296FB4FC-D152-45AF-99BF-09CC7A212262}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {296FB4FC-D152-45AF-99BF-09CC7A212262}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {296FB4FC-D152-45AF-99BF-09CC7A212262}.Release|Any CPU.Build.0 = Release|Any CPU
+       EndGlobalSection
+       GlobalSection(SolutionProperties) = preSolution
+               HideSolutionNode = FALSE
+       EndGlobalSection
+EndGlobal
diff --git a/AppFW.v12.suo b/AppFW.v12.suo
new file mode 100755 (executable)
index 0000000..b29eeb5
Binary files /dev/null and b/AppFW.v12.suo differ
diff --git a/Tizen.Applications/Interop/Interop.ApplicationManager.cs b/Tizen.Applications/Interop/Interop.ApplicationManager.cs
new file mode 100755 (executable)
index 0000000..9f46f12
--- /dev/null
@@ -0,0 +1,224 @@
+// Copyright 2016 by Samsung Electronics, Inc.,
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Runtime.InteropServices;
+
+internal static partial class Interop
+{
+    internal static partial class ApplicationManager
+    {
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void AppManagerAppContextEventCallback(IntPtr handle, int state, IntPtr userData);
+        //void(* app_manager_app_context_event_cb)(app_context_h app_context, app_context_event_e event, void *user_data)
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate bool AppManagerAppInfoCallback(IntPtr handle, IntPtr userData);
+        //bool(* app_manager_app_info_cb )(app_info_h app_info, void *user_data)
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate bool AppManagerAppContextCallback(IntPtr handle, IntPtr userData);
+        //bool(* app_manager_app_context_cb)(app_context_h app_context, void *user_data)
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate bool AppInfoFilterCallback(IntPtr handle, IntPtr userData);
+        //bool(* app_info_filter_cb )(app_info_h app_info, void *user_data)
+
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate bool AppInfoMetadataCallback(string key, string value, IntPtr userData);
+        //bool(* app_info_metadata_cb )(const char *metadata_key, const char *metadata_value, void *user_data)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_set_app_context_event_cb")]
+        internal static extern int AppManagerSetAppContextEvent(AppManagerAppContextEventCallback callback, IntPtr userData);
+        //int app_manager_set_app_context_event_cb( app_manager_app_context_event_cb callback, void * user_data)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_unset_app_context_event_cb")]
+        internal static extern void AppManagerUnSetAppContextEvent();
+        //void app_manager_unset_app_context_event_cb (void);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_foreach_app_context")]
+        internal static extern int AppManagerForeachAppContext(AppManagerAppContextCallback callback, IntPtr userData);
+        //int app_manager_foreach_app_context(app_manager_app_context_cb callback, void *user_data)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_app_context")]
+        internal static extern int AppManagerGetAppContext(string applicationId, out IntPtr handle);
+        //int app_manager_get_app_context(const char* app_id, app_context_h *app_context);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_app_id")]
+        internal static extern int AppManagerGetAppId(int processId, out string applicationId);
+        //int app_manager_get_app_id (pid_t pid, char **appid);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_is_running")]
+        internal static extern int AppManagerIsRunning(string applicationId, out bool running);
+        //int app_manager_is_running (const char *appid, bool *running);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_resume_app")]
+        internal static extern int AppManagerResumeApp(IntPtr handle);
+        //int app_manager_resume_app (app_context_h handle);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_request_terminate_bg_app")]
+        internal static extern int AppManagerRequestTerminateBgApp(IntPtr handle);
+        //int app_manager_request_terminate_bg_app (app_context_h handle);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_foreach_app_info")]
+        internal static extern int AppManagerForeachAppInfo(AppManagerAppInfoCallback callback, IntPtr userData);
+        //int app_manager_foreach_app_info(app_manager_app_info_cb callback, void *user_data)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_app_info")]
+        internal static extern int AppManagerGetAppInfo(string applicationId, out IntPtr handle);
+        //int app_manager_get_app_info(const char * app_id, app_info_h * app_info)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_shared_data_path")]
+        internal static extern int AppManagerGetSharedDataPath(string applicationId, out string path);
+        //int app_manager_get_shared_data_path (const char *appid, char **path);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_shared_resource_path")]
+        internal static extern int AppManagerGetSharedResourcePath(string applicationId, out string path);
+        //int app_manager_get_shared_resource_path (const char *appid, char **path);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_shared_trusted_path")]
+        internal static extern int AppManagerGetSharedTrustedPath(string applicationId, out string path);
+        //int app_manager_get_shared_trusted_path (const char *appid, char **path);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_manager_get_external_shared_data_path")]
+        internal static extern int AppManagerGetExternalSharedDataPath(string applicationId, out string path);
+        //int app_manager_get_external_shared_data_path (const char *appid, char **path);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_context_destroy")]
+        internal static extern int AppContextDestroy(IntPtr handle);
+        //int app_context_destroy(app_context_h app_context)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_context_get_package")]
+        internal static extern int AppContextGetPackage(IntPtr handle, out IntPtr package);
+        //int app_context_get_package (app_context_h app_context, char **package);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_context_get_app_id")]
+        internal static extern int AppContextGetAppId(IntPtr handle, out IntPtr applicationId);
+        //int app_context_get_app_id(app_context_h app_context, char **app_id)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_context_get_pid")]
+        internal static extern int AppContextGetPid(IntPtr handle, out int processId);
+        //int app_context_get_pid (app_context_h app_context, pid_t *pid)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_context_is_terminated")]
+        internal static extern int AppContextIsTerminated(IntPtr handle, out bool terminated);
+        //int app_context_is_terminated (app_context_h app_context, bool *terminated);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_context_is_equal")]
+        internal static extern int AppContextIsEqual(IntPtr first, IntPtr second, out bool equal);
+        //int app_context_is_equal (app_context_h lhs, app_context_h rhs, bool *equal);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_context_clone")]
+        internal static extern int AppContextClone(out IntPtr destination, IntPtr source);
+        //int app_context_clone (app_context_h *clone, app_context_h app_context);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_create")]
+        internal static extern int AppInfoCreate(string applicationId, out IntPtr handle);
+        //int app_info_create (const char *app_id, app_info_h *app_info);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_destroy")]
+        internal static extern int AppInfoDestroy(IntPtr handle);
+        //int app_info_destroy (app_info_h app_info);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_app_id")]
+        internal static extern int AppInfoGetAppId(IntPtr handle, out IntPtr applicationId);
+        //int app_info_get_app_id (app_info_h app_info, char **app_id);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_exec")]
+        internal static extern int AppInfoGetExec(IntPtr handle, out IntPtr exec);
+        //int app_info_get_exec (app_info_h app_info, char **exec);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_label")]
+        internal static extern int AppInfoGetLabel(IntPtr handle, out IntPtr label);
+        //int app_info_get_label (app_info_h app_info, char **label);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_localed_label")]
+        internal static extern int AppInfoGetLocaledLabel(string applicationId, string locale, out IntPtr label);
+        //int app_info_get_localed_label (const char *app_id, const char *locale, char **label);
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_icon")]
+        internal static extern int AppInfoGetIcon(IntPtr handle, out IntPtr path);
+        //int app_info_get_icon (app_info_h app_info, char **path)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_package")]
+        internal static extern int AppInfoGetPackage(IntPtr handle, out IntPtr package);
+        //int app_info_get_package (app_info_h app_info, char **package)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_get_type")]
+        internal static extern int AppInfoGetType(IntPtr handle, out IntPtr type);
+        //int app_info_get_type (app_info_h app_info, char **type)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_foreach_metadata")]
+        internal static extern int AppInfoForeachMetadata(IntPtr handle, AppInfoMetadataCallback callback, IntPtr userData);
+        //int app_info_foreach_metadata(app_info_h app_info, app_info_metadata_cb callback, void *user_data)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_nodisplay")]
+        internal static extern int AppInfoIsNodisplay(IntPtr handle, out bool noDisplay);
+        //int app_info_is_nodisplay (app_info_h app_info, bool *nodisplay)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_equal")]
+        internal static extern int AppInfoIsEqual(IntPtr first, IntPtr second, out bool equal);
+        //int app_info_is_equal (app_info_h lhs, app_info_h rhs, bool *equal)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_enabled")]
+        internal static extern int AppInfoIsEnabled(IntPtr handle, out bool enabled);
+        //int app_info_is_enabled (app_info_h app_info, bool *enabled)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_onboot")]
+        internal static extern int AppInfoIsOnBoot(IntPtr handle, out bool onBoot);
+        //int app_info_is_onboot (app_info_h app_info, bool *onboot)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_is_preload")]
+        internal static extern int AppInfoIsPreLoad(IntPtr handle, out bool preLoaded);
+        //int app_info_is_preload (app_info_h app_info, bool *preload)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_clone")]
+        internal static extern int AppInfoClone(out IntPtr destination, IntPtr source);
+        //int app_info_clone(app_info_h * clone, app_info_h app_info)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_create")]
+        internal static extern int AppInfoFilterCreate(out IntPtr handle);
+        //int app_info_filter_create(app_info_filter_h * handle)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_destroy")]
+        internal static extern int AppInfoFilterDestroy(IntPtr handle);
+        //int app_info_filter_destroy(app_info_filter_h handle)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_add_bool")]
+        internal static extern int AppInfoFilterAddBool(IntPtr handle, string property, bool value);
+        //int app_info_filter_add_bool(app_info_filter_h handle, const char *property, const bool value)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_add_string")]
+        internal static extern int AppInfoFilterAddString(IntPtr handle, string property, string value);
+        //int app_info_filter_add_string(app_info_filter_h handle, const char *property, const char *value)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_count_appinfo")]
+        internal static extern int AppInfoFilterCountAppinfo(IntPtr handle, out int count);
+        //int app_info_filter_count_appinfo(app_info_filter_h handle, int *count)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_filter_foreach_appinfo")]
+        internal static extern int AppInfoFilterForeachAppinfo(IntPtr handle, AppInfoFilterCallback callback, IntPtr userData);
+        //int app_info_filter_foreach_appinfo(app_info_filter_h handle, app_info_filter_cb callback, void * user_data)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_metadata_filter_create")]
+        internal static extern int AppInfoMetadataFilterCreate(out IntPtr handle);
+        //int app_info_metadata_filter_create (app_info_metadata_filter_h *handle)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_metadata_filter_destroy")]
+        internal static extern int AppInfoMetadataFilterDestroy(IntPtr handle);
+        //int app_info_metadata_filter_destroy (app_info_metadata_filter_h handle)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_metadata_filter_add")]
+        internal static extern int AppInfoMetadataFilterAdd(IntPtr handle, string key, string value);
+        //int app_info_metadata_filter_add (app_info_metadata_filter_h handle, const char *key, const char *value)
+
+        [DllImport(Libraries.AppManager, EntryPoint = "app_info_metadata_filter_foreach")]
+        internal static extern int AppInfoMetadataFilterForeach(IntPtr handle, AppInfoFilterCallback callback, IntPtr userData);
+        //int app_info_metadata_filter_foreach (app_info_metadata_filter_h handle, app_info_filter_cb callback, void *user_data)
+    }
+}
index 9141ea0..e1e5ff8 100755 (executable)
@@ -15,6 +15,7 @@ internal static partial class Interop
         public const string AppControl = "libcapi-appfw-app-control.so.0";
         public const string AppEvent = "libcapi-appfw-event.so.0";
         public const string AppcoreAgent = "libappcore-agent.so.1";
+        public const string AppManager = "libcapi-appfw-app-manager.so.0";
         public const string Bundle = "libbundle.so.0";
         public const string Glib = "libglib-2.0.so.0";
         public const string Libc = "libc.so.6";
index 6ec4179..d1c6c30 100755 (executable)
@@ -55,6 +55,7 @@
     <Compile Include="Interop\Interop.AppControl.cs" />
     <Compile Include="Interop\Interop.AppEvent.cs" />
     <Compile Include="Interop\Interop.Application.cs" />
+    <Compile Include="Interop\Interop.ApplicationManager.cs" />
     <Compile Include="Interop\Interop.Bundle.cs" />
     <Compile Include="Interop\Interop.Glib.cs" />
     <Compile Include="Interop\Interop.Libc.cs" />
     <Compile Include="Tizen.Applications\LowMemoryStatus.cs" />
     <Compile Include="Tizen.Applications\ServiceApplication.cs" />
     <Compile Include="Tizen.Applications\UIApplication.cs" />
+    <Compile Include="Tizen.Applications\ApplicationChangedEventArgs.cs" />
+    <Compile Include="Tizen.Applications\ApplicationManager.cs" />
+    <Compile Include="Tizen.Applications\ApplicationManagerEvent.cs" />
+    <Compile Include="Tizen.Applications\ApplicationManagerFilter.cs" />
+    <Compile Include="Tizen.Applications\ApplicationManagerImpl.cs" />
+    <Compile Include="Tizen.Applications\InstalledApplication.cs" />
+    <Compile Include="Tizen.Applications\RunningApplication.cs" />
     <Compile Include="Tizen.Applications\AppControl.cs" />
     <Compile Include="Tizen.Applications\AppControlLaunchMode.cs" />
     <Compile Include="Tizen.Applications\AppControlLaunchResult.cs" />
   <Target Name="AfterBuild">
   </Target>
   -->
-</Project>
\ No newline at end of file
+</Project>
index ca1d04b..5283ef1 100755 (executable)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
-    <ProjectView>ProjectFiles</ProjectView>
+    <ProjectView>ShowAllFiles</ProjectView>
   </PropertyGroup>
 </Project>
\ No newline at end of file
diff --git a/Tizen.Applications/Tizen.Applications/ApplicationChangedEventArgs.cs b/Tizen.Applications/Tizen.Applications/ApplicationChangedEventArgs.cs
new file mode 100755 (executable)
index 0000000..76f74f0
--- /dev/null
@@ -0,0 +1,87 @@
+/// Copyright 2016 by Samsung Electronics, Inc.,
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Collections.Generic;
+
+namespace Tizen.Applications
+{
+    /// <summary>
+    /// Enumeration for application state.
+    /// </summary>
+    public enum ApplicationState
+    {
+        /// <summary>
+        /// Initial state.
+        /// </summary>
+        None = -1,
+        /// <summary>
+        /// Launched state.
+        /// </summary>
+        Launched,
+        /// <summary>
+        /// Terminated state.
+        /// </summary>
+        Terminated,
+    }
+
+    /// <summary>
+    /// ApplicationChangedEventArgs class. This class is an event arguments of the ApplicationLaunched and ApplicationTerminated events.
+    /// </summary>
+    public class ApplicationChangedEventArgs : EventArgs
+    {
+        private string _appid = "";
+        private int _pid = 0;
+        private ApplicationState _state = ApplicationState.None;
+
+        public ApplicationChangedEventArgs(string applicationId, int processId, int state)
+        {
+            _appid = applicationId;
+            _pid = processId;
+            _state = (ApplicationState)state;
+        }
+
+        /// <summary>
+        /// ApplicationId property.
+        /// </summary>
+        /// <returns>string application id.</returns>
+        public string ApplicationId
+        {
+            get
+            {
+                return _appid;
+            }
+        }
+
+        /// <summary>
+        /// ProcessId property.
+        /// </summary>
+        /// <returns>int process id.</returns>
+        public int ProcessId
+        {
+            get
+            {
+                return _pid;
+            }
+        }
+
+        /// <summary>
+        /// State property.
+        /// </summary>
+        /// <returns>ApplicationState enum value.</returns>
+        public ApplicationState State
+        {
+            get
+            {
+                return _state;
+            }
+        }
+
+    }
+}
+
diff --git a/Tizen.Applications/Tizen.Applications/ApplicationManager.cs b/Tizen.Applications/Tizen.Applications/ApplicationManager.cs
new file mode 100755 (executable)
index 0000000..75dffb3
--- /dev/null
@@ -0,0 +1,138 @@
+/// Copyright 2016 by Samsung Electronics, Inc.,
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Tizen.Applications
+{
+    /// <summary>
+    /// ApplicationManager class. This class has the methods and events of the ApplicationManager.
+    /// </summary>
+    static public class ApplicationManager
+    {
+        /// <summary>
+        /// ApplicationLaunched event. This event is occurred when the application is launched.
+        /// </summary>
+        static public event EventHandler<ApplicationChangedEventArgs> ApplicationLaunched
+        {
+            add
+            {
+                ApplicationManagerImpl.Instance.ApplicationLaunched += value;
+            }
+            remove
+            {
+                ApplicationManagerImpl.Instance.ApplicationLaunched -= value;
+            }
+        }
+
+        /// <summary>
+        /// ApplicationTerminated event. This event is occurred when the application is terminated.
+        /// </summary>
+        static public event EventHandler<ApplicationChangedEventArgs> ApplicationTerminated
+        {
+            add
+            {
+                ApplicationManagerImpl.Instance.ApplicationTerminated += value;
+            }
+            remove
+            {
+                ApplicationManagerImpl.Instance.ApplicationTerminated -= value;
+            }
+        }
+
+        /// <summary>
+        /// GetInstalledAppsAsync asynchronous method.
+        /// </summary>
+        /// <returns>It returns the InstalledApplication informations asynchronously.</returns>
+        static public Task<IEnumerable<InstalledApplication>> GetInstalledAppsAsync()
+        {
+            return ApplicationManagerImpl.Instance.GetInstalledAppsAsync();
+        }
+
+        /// <summary>
+        /// GetInstalledAppsAsync asynchronous method.
+        /// </summary>
+        /// <param name="filter">Filter is a InstalledApplicationFilter type. It consisting of a key and value pairs.</param>
+        /// <returns>It returns the filtered InstalledApplication informations asynchronously.</returns>
+        static public Task<IEnumerable<InstalledApplication>> GetInstalledAppsAsync(InstalledApplicationFilter filter)
+        {
+            return ApplicationManagerImpl.Instance.GetInstalledAppsAsync(filter);
+        }
+
+        /// <summary>
+        /// GetInstalledAppsAsync asynchronous method.
+        /// </summary>
+        /// <param name="filter">Filter is a InstalledApplicationMetadataFilter type. It consisting of a key and value pairs.</param>
+        /// <returns>It returns the filtered InstalledApplication informations asynchronously.</returns>
+        static public Task<IEnumerable<InstalledApplication>> GetInstalledAppsAsync(InstalledApplicationMetadataFilter filter)
+        {
+            return ApplicationManagerImpl.Instance.GetInstalledAppsAsync(filter);
+        }
+
+        /// <summary>
+        /// GetRunningAppsAsync asynchronous method.
+        /// </summary>
+        /// <returns>It returns the RunningApplication informations asynchronously.</returns>
+        static public Task<IEnumerable<RunningApplication>> GetRunningAppsAsync()
+        {
+            return ApplicationManagerImpl.Instance.GetRunningAppsAsync();
+        }
+
+        /// <summary>
+        /// GetInstalledApp synchronous method.
+        /// </summary>
+        /// <param name="applicationId"> string application id.</param>
+        /// <returns>It returns the InstalledApplication information synchronously.</returns>
+        static public InstalledApplication GetInstalledApp(string applicationId)
+        {
+            return ApplicationManagerImpl.Instance.GetInstalledApp(applicationId);
+        }
+
+        /// <summary>
+        /// GetRunningApp synchronous method.
+        /// </summary>
+        /// <param name="applicationId">string application id.</param>
+        /// <returns>It returns the RunningApplication information synchronously.</returns>
+        static public RunningApplication GetRunningApp(string applicationId)
+        {
+            return ApplicationManagerImpl.Instance.GetRunningApp(applicationId);
+        }
+
+        /// <summary>
+        /// GetRunningApp synchronous method.
+        /// </summary>
+        /// <param name="processId">int process id.</param>
+        /// <returns>It returns the RunningApplication information synchronously.</returns>
+        static public RunningApplication GetRunningApp(int processId)
+        {
+            return ApplicationManagerImpl.Instance.GetRunningApp(processId);
+        }
+
+        /// <summary>
+        /// IsRunningApp synchronous method.
+        /// </summary>
+        /// <param name="applicationId">string application id.</param>
+        /// <returns>bool. If the application is running, true; otherwise, false.</returns>
+        static public bool IsRunningApp(string applicationId)
+        {
+            return ApplicationManagerImpl.Instance.IsRunningApp(applicationId);
+        }
+
+        /// <summary>
+        /// IsRunningApp synchronous method.
+        /// </summary>
+        /// <param name="processId">int process id.</param>
+        /// <returns>bool. If the application is running, true; otherwise, false.</returns>
+        static public bool IsRunningApp(int processId)
+        {
+            return ApplicationManagerImpl.Instance.IsRunningApp(processId);
+        }
+    }
+}
diff --git a/Tizen.Applications/Tizen.Applications/ApplicationManagerEvent.cs b/Tizen.Applications/Tizen.Applications/ApplicationManagerEvent.cs
new file mode 100755 (executable)
index 0000000..3ea77eb
--- /dev/null
@@ -0,0 +1,67 @@
+/// Copyright 2016 by Samsung Electronics, Inc.,
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Threading.Tasks;
+using System.Runtime.InteropServices;
+
+namespace Tizen.Applications
+{
+    internal partial class ApplicationManagerImpl
+    {
+        internal event EventHandler<ApplicationChangedEventArgs> ApplicationLaunched;
+        internal event EventHandler<ApplicationChangedEventArgs> ApplicationTerminated;
+        private Interop.ApplicationManager.AppManagerAppContextEventCallback _applicationChangedEventCallback;
+
+        private void RegisterApplicationChangedEvent()
+        {
+            Console.WriteLine("RegisterApplicationChangedEvent()");
+            _applicationChangedEventCallback = (IntPtr context, int state, IntPtr userData) =>
+            {
+                Console.WriteLine("ApplicationChangedEventCallback");
+                if (context == IntPtr.Zero) return;
+
+                IntPtr ptr = IntPtr.Zero;
+                Interop.ApplicationManager.AppContextGetAppId(context, out ptr);
+                string appid = Marshal.PtrToStringAuto(ptr);
+                int pid = 0;
+                Interop.ApplicationManager.AppContextGetPid(context, out pid);
+
+                if (state == 0)
+                {
+                    var launchedEventCache = ApplicationLaunched;
+                    if (launchedEventCache != null)
+                    {
+                        Console.WriteLine("Raise up ApplicationLaunched");
+                        ApplicationChangedEventArgs e = new ApplicationChangedEventArgs(appid, pid, state);
+                        launchedEventCache(null, e);
+                    }
+                }
+                else if (state == 1)
+                {
+                    var terminatedEventCache = ApplicationTerminated;
+                    if (terminatedEventCache != null)
+                    {
+                        Console.WriteLine("Raise up ApplicationTerminated");
+                        ApplicationChangedEventArgs e = new ApplicationChangedEventArgs(appid, pid, state);
+                        terminatedEventCache(null, e);
+                    }
+                }
+            };
+
+            Interop.ApplicationManager.AppManagerSetAppContextEvent(_applicationChangedEventCallback, IntPtr.Zero);
+        }
+
+        private void UnRegisterApplicationChangedEvent()
+        {
+            Console.WriteLine("UnRegisterApplicationChangedEvent()");
+            Interop.ApplicationManager.AppManagerUnSetAppContextEvent();
+        }
+    }
+}
+
diff --git a/Tizen.Applications/Tizen.Applications/ApplicationManagerFilter.cs b/Tizen.Applications/Tizen.Applications/ApplicationManagerFilter.cs
new file mode 100755 (executable)
index 0000000..ecf8af2
--- /dev/null
@@ -0,0 +1,156 @@
+/// Copyright 2016 by Samsung Electronics, Inc.,
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Collections.Generic;
+
+namespace Tizen.Applications
+{
+    /// <summary>
+    /// InstalledApplicationFilter class. This class is a parameter of InstallerApplicationAppsAsync method.
+    /// </summary>
+    public class InstalledApplicationFilter : IDisposable
+    {
+        /// <summary>
+        /// Keys class. This class is a possible key to use in the InstalledApplicationFilter.
+        /// </summary>
+        public static class Keys
+        {
+            /// <summary>
+            ///
+            /// </summary>
+            public const string Id = "PACKAGE_INFO_PROP_APP_ID";
+            /// <summary>
+            ///
+            /// </summary>
+            public const string Type = "PACKAGE_INFO_PROP_APP_TYPE";
+            /// <summary>
+            ///
+            /// </summary>
+            public const string Category = "PACKAGE_INFO_PROP_APP_CATEGORY";
+            /// <summary>
+            ///
+            /// </summary>
+            public const string NoDisplay = "PACKAGE_INFO_PROP_APP_NODISPLAY";
+            /// <summary>
+            ///
+            /// </summary>
+            public const string TaskManage = "PACKAGE_INFO_PROP_APP_TASKMANAGE";
+        }
+
+        private IntPtr _handle;
+        private bool disposed = false;
+
+        public InstalledApplicationFilter(IDictionary<string, string> filter)
+        {
+            Interop.ApplicationManager.AppInfoFilterCreate(out _handle);
+            foreach (var item in filter)
+            {
+                if ((item.Key == Keys.Id) || (item.Key == Keys.Type) || (item.Key == Keys.Category))
+                {
+                    Interop.ApplicationManager.AppInfoFilterAddString(_handle, item.Key, item.Value);
+                }
+                else if ((item.Key == Keys.NoDisplay) || (item.Key == Keys.TaskManage))
+                {
+                    Interop.ApplicationManager.AppInfoFilterAddBool(_handle, item.Key, Convert.ToBoolean(item.Value));
+                }
+                else
+                {
+                    // Not Supported Key
+                    Console.WriteLine(item.Key + " is NOT supported for the InstalledApplicationFilter");
+                }
+            }
+        }
+
+        internal IntPtr Handle
+        {
+            get
+            {
+                return _handle;
+            }
+        }
+
+        ~InstalledApplicationFilter()
+        {
+            Dispose(false);
+        }
+
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        private void Dispose(bool disposing)
+        {
+            if (disposed)
+                return;
+            if (disposing)
+            {
+                // to be used if there are any other disposable objects
+            }
+            if (_handle != IntPtr.Zero)
+            {
+                Interop.ApplicationManager.AppInfoFilterDestroy(_handle);
+            }
+            disposed = true;
+        }
+    }
+
+    /// <summary>
+    /// InstalledApplicationMetadataFilter class. This class is a parameter of InstallerApplicationAppsAsync method.
+    /// </summary>
+    public class InstalledApplicationMetadataFilter : IDisposable
+    {
+        private IntPtr _handle;
+        private bool disposed = false;
+
+        public InstalledApplicationMetadataFilter(IDictionary<string, string> filter)
+        {
+            Interop.ApplicationManager.AppInfoMetadataFilterCreate(out _handle);
+            foreach (var item in filter)
+            {
+                Interop.ApplicationManager.AppInfoMetadataFilterAdd(_handle, item.Key, item.Value);
+            }
+        }
+
+        internal IntPtr Handle
+        {
+            get
+            {
+                return _handle;
+            }
+        }
+
+        ~InstalledApplicationMetadataFilter()
+        {
+            Dispose(false);
+        }
+
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        private void Dispose(bool disposing)
+        {
+            if (disposed)
+                return;
+            if (disposing)
+            {
+                // to be used if there are any other disposable objects
+            }
+            if (_handle != IntPtr.Zero)
+            {
+                Interop.ApplicationManager.AppInfoMetadataFilterDestroy(_handle);
+            }
+            disposed = true;
+        }
+    }
+}
\ No newline at end of file
diff --git a/Tizen.Applications/Tizen.Applications/ApplicationManagerImpl.cs b/Tizen.Applications/Tizen.Applications/ApplicationManagerImpl.cs
new file mode 100755 (executable)
index 0000000..1edb51b
--- /dev/null
@@ -0,0 +1,225 @@
+/// Copyright 2016 by Samsung Electronics, Inc.,
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using System.Runtime.InteropServices;
+
+namespace Tizen.Applications
+{
+    internal partial class ApplicationManagerImpl : IDisposable
+    {
+        private static ApplicationManagerImpl _instance = new ApplicationManagerImpl();
+        private bool _disposed = false;
+
+        internal static ApplicationManagerImpl Instance
+        {
+            get
+            {
+                return _instance;
+            }
+        }
+
+        private ApplicationManagerImpl()
+        {
+            Console.WriteLine("ApplicationManagerImpl()");
+            RegisterApplicationChangedEvent();
+        }
+
+        internal async Task<IEnumerable<InstalledApplication>> GetInstalledAppsAsync()
+        {
+            Console.WriteLine("GetInstalledAppsAsync()");
+            return await Task.Run(() =>
+            {
+                List<InstalledApplication> Result = new List<InstalledApplication>();
+
+                Interop.ApplicationManager.AppManagerAppInfoCallback cb = (IntPtr handle, IntPtr userData) =>
+                {
+                    if (handle != IntPtr.Zero)
+                    {
+                        IntPtr clonedHandle;
+                        Interop.ApplicationManager.AppInfoClone(out clonedHandle, handle);
+                        InstalledApplication app = new InstalledApplication(clonedHandle);
+                        Result.Add(app);
+                        return true;
+                    }
+                    return false;
+                };
+                Interop.ApplicationManager.AppManagerForeachAppInfo(cb, IntPtr.Zero);
+                return Result;
+            });
+        }
+
+        internal async Task<IEnumerable<InstalledApplication>> GetInstalledAppsAsync(InstalledApplicationFilter filter)
+        {
+            Console.WriteLine("GetInstalledAppsAsync(InstalledApplicationFilter filter)");
+            return await Task.Run(() =>
+            {
+                List<InstalledApplication> Result = new List<InstalledApplication>();
+
+                Interop.ApplicationManager.AppInfoFilterCallback cb = (IntPtr handle, IntPtr userData) =>
+                {
+                    Console.WriteLine("AppInfoFilterCallback");
+                    if (handle != IntPtr.Zero)
+                    {
+                        IntPtr clonedHandle;
+                        Interop.ApplicationManager.AppInfoClone(out clonedHandle, handle);
+                        InstalledApplication app = new InstalledApplication(clonedHandle);
+                        Result.Add(app);
+                        return true;
+                    }
+                    return false;
+                };
+
+                Interop.ApplicationManager.AppInfoFilterForeachAppinfo(filter.Handle, cb, IntPtr.Zero);
+                return Result;
+            });
+        }
+
+        internal async Task<IEnumerable<InstalledApplication>> GetInstalledAppsAsync(InstalledApplicationMetadataFilter filter)
+        {
+            Console.WriteLine("GetInstalledAppsAsync(InstalledApplicationMetadataFilter filter)");
+
+            return await Task.Run(() =>
+            {
+                List<InstalledApplication> Result = new List<InstalledApplication>();
+
+                Interop.ApplicationManager.AppInfoFilterCallback cb = (IntPtr handle, IntPtr userData) =>
+                {
+                    Console.WriteLine("AppInfoFilterCallback");
+                    if (handle != IntPtr.Zero)
+                    {
+                        IntPtr clonedHandle;
+                        Interop.ApplicationManager.AppInfoClone(out clonedHandle, handle);
+                        InstalledApplication app = new InstalledApplication(clonedHandle);
+                        Result.Add(app);
+                        return true;
+                    }
+                    return false;
+                };
+
+                Interop.ApplicationManager.AppInfoMetadataFilterForeach(filter.Handle, cb, IntPtr.Zero);
+                return Result;
+            });
+        }
+
+        internal async Task<IEnumerable<RunningApplication>> GetRunningAppsAsync()
+        {
+            Console.WriteLine("GetRunningAppsAsync()");
+
+            return await Task.Run(() =>
+            {
+                List<RunningApplication> Result = new List<RunningApplication>();
+
+                Interop.ApplicationManager.AppManagerAppContextCallback cb = (IntPtr handle, IntPtr userData) =>
+                {
+                    Console.WriteLine("AppManagerAppContextCallback");
+                    if (handle != IntPtr.Zero)
+                    {
+                        IntPtr ptr = IntPtr.Zero;
+                        Interop.ApplicationManager.AppContextGetAppId(handle, out ptr);
+                        string appid = Marshal.PtrToStringAuto(ptr);
+                        int pid = 0;
+                        Interop.ApplicationManager.AppContextGetPid(handle, out pid);
+                        RunningApplication app = new RunningApplication(appid, pid);
+                        Result.Add(app);
+                        return true;
+                    }
+                    return false;
+                };
+
+                Interop.ApplicationManager.AppManagerForeachAppContext(cb, IntPtr.Zero);
+                return Result;
+            });
+        }
+
+        internal InstalledApplication GetInstalledApp(string applicationId)
+        {
+            Console.WriteLine("GetInstalledApp(appid)");
+            IntPtr info = IntPtr.Zero;
+            Interop.ApplicationManager.AppManagerGetAppInfo(applicationId, out info);
+            if (info != IntPtr.Zero)
+            {
+                InstalledApplication app = new InstalledApplication(info);
+                return app;
+            }
+            return null;
+        }
+
+        internal RunningApplication GetRunningApp(string applicationId)
+        {
+            Console.WriteLine("GetRunningApp(appid)");
+            IntPtr context = IntPtr.Zero;
+            Interop.ApplicationManager.AppManagerGetAppContext(applicationId, out context);
+
+            if (context != IntPtr.Zero)
+            {
+                int pid = 0;
+                Interop.ApplicationManager.AppContextGetPid(context, out pid);
+                Interop.ApplicationManager.AppContextDestroy(context);
+                RunningApplication app = new RunningApplication(applicationId, pid);
+                return app;
+            }
+            return null;
+        }
+
+        internal RunningApplication GetRunningApp(int processId)
+        {
+            Console.WriteLine("GetRunningApp(pid)");
+            string appid = "";
+            Interop.ApplicationManager.AppManagerGetAppId(processId, out appid);
+            RunningApplication app = new RunningApplication(appid, processId);
+            return app;
+        }
+
+        internal bool IsRunningApp(string applicationId)
+        {
+            Console.WriteLine("IsRunningApp(appid)");
+            bool running = false;
+            Interop.ApplicationManager.AppManagerIsRunning(applicationId, out running);
+            return running;
+        }
+
+        internal bool IsRunningApp(int processId)
+        {
+            Console.WriteLine("IsRunningApp(pid)");
+            string appid = "";
+            Interop.ApplicationManager.AppManagerGetAppId(processId, out appid);
+            bool running = false;
+            Interop.ApplicationManager.AppManagerIsRunning(appid, out running);
+            return running;
+        }
+
+        ~ApplicationManagerImpl()
+        {
+            Console.WriteLine("~ApplicationManagerImpl()");
+            UnRegisterApplicationChangedEvent();
+            Dispose(false);
+        }
+
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        private void Dispose(bool disposing)
+        {
+            if (_disposed)
+                return;
+
+            if (disposing)
+            {
+                // Free managed objects.
+            }
+            //Free unmanaged objects
+            _disposed = true;
+        }
+    }
+}
index 94f2f64..c9d6dc4 100755 (executable)
@@ -1,4 +1,4 @@
-using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Runtime.InteropServices;
diff --git a/Tizen.Applications/Tizen.Applications/InstalledApplication.cs b/Tizen.Applications/Tizen.Applications/InstalledApplication.cs
new file mode 100755 (executable)
index 0000000..968518e
--- /dev/null
@@ -0,0 +1,216 @@
+/// Copyright 2016 by Samsung Electronics, Inc.,
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Collections.Generic;
+using System.Runtime.InteropServices;
+
+namespace Tizen.Applications
+{
+    /// <summary>
+    /// InstalledApplication class. This class has the methods and properties of InstalledApplication.
+    /// </summary>
+    public class InstalledApplication : IDisposable
+    {
+        private IntPtr _handle;
+        private bool disposed = false;
+
+        internal InstalledApplication(IntPtr handle)
+        {
+            _handle = handle;
+        }
+
+        /// <summary>
+        /// ApplicationId property.
+        /// </summary>
+        /// <returns>string application id.</returns>
+        public string ApplicationId
+        {
+            get
+            {
+                IntPtr ptr = IntPtr.Zero;
+                Interop.ApplicationManager.AppInfoGetAppId(_handle, out ptr);
+                string appid = Marshal.PtrToStringAuto(ptr);
+                return appid;
+            }
+        }
+        /// <summary>
+        /// PackageId property.
+        /// </summary>
+        /// <returns>string package id.</returns>
+        public string PackageId
+        {
+            get
+            {
+                IntPtr ptr = IntPtr.Zero;
+                Interop.ApplicationManager.AppInfoGetPackage(_handle, out ptr);
+                string packageid = Marshal.PtrToStringAuto(ptr);
+                return packageid;
+            }
+        }
+        /// <summary>
+        /// Label property.
+        /// </summary>
+        /// <returns>string label.</returns>
+        public string Label
+        {
+            get
+            {
+                IntPtr ptr = IntPtr.Zero;
+                Interop.ApplicationManager.AppInfoGetLabel(_handle, out ptr);
+                string label = Marshal.PtrToStringAuto(ptr);
+                return label;
+            }
+        }
+        /// <summary>
+        /// ExcutablePath property.
+        /// </summary>
+        /// <returns>string executable path.</returns>
+        public string ExcutablePath
+        {
+            get
+            {
+                IntPtr ptr = IntPtr.Zero;
+                Interop.ApplicationManager.AppInfoGetExec(_handle, out ptr);
+                string exec = Marshal.PtrToStringAuto(ptr);
+                return exec;
+            }
+        }
+        /// <summary>
+        /// IconPath property.
+        /// </summary>
+        /// <returns>string icon path.</returns>
+        public string IconPath
+        {
+            get
+            {
+                IntPtr ptr = IntPtr.Zero;
+                Interop.ApplicationManager.AppInfoGetIcon(_handle, out ptr);
+                string path = Marshal.PtrToStringAuto(ptr);
+                return path;
+            }
+        }
+        /// <summary>
+        /// Type property.
+        /// </summary>
+        /// <returns>string application type.</returns>
+        public string Type
+        {
+            get
+            {
+                IntPtr ptr = IntPtr.Zero;
+                Interop.ApplicationManager.AppInfoGetType(_handle, out ptr);
+                string type = Marshal.PtrToStringAuto(ptr);
+                return type;
+            }
+        }
+
+        /// <summary>
+        /// Metadata property.
+        /// </summary>
+        /// <returns>It returns IDictionary object with string key value pairs.</returns>
+        public IDictionary<String, String> Metadata
+        {
+            get
+            {
+                IDictionary<string, string> metadata = new Dictionary<String, String>();
+
+                Interop.ApplicationManager.AppInfoMetadataCallback cb = (string key, string value, IntPtr userData) =>
+                {
+                    Console.WriteLine("AppInfoMetadataCallback");
+                    if (key.Length != 0)
+                    {
+                        metadata.Add(key, value);
+                    }
+                    return true;
+                };
+
+                Interop.ApplicationManager.AppInfoForeachMetadata(_handle, cb, IntPtr.Zero);
+
+                return metadata;
+            }
+        }
+        /// <summary>
+        /// NoDisplay property.
+        /// </summary>
+        /// <returns>bool. If the application icon is not displayed on the menu screen, true; otherwise, false.</returns>
+        public bool NoDisplay
+        {
+            get
+            {
+                bool nodisplay = false;
+                Interop.ApplicationManager.AppInfoIsNodisplay(_handle, out nodisplay);
+                return nodisplay;
+            }
+        }
+        /// <summary>
+        /// OnBoot property.
+        /// </summary>
+        /// <returns>bool. If the application will be automatically start on boot, true; otherwise, false.</returns>
+        public bool OnBoot
+        {
+            get
+            {
+                bool onboot = false;
+                Interop.ApplicationManager.AppInfoIsOnBoot(_handle, out onboot);
+                return onboot;
+            }
+        }
+        /// <summary>
+        /// PreLoaded property.
+        /// </summary>
+        /// <returns>bool. If the application is preloaded, true; otherwise, false.</returns>
+        public bool PreLoaded
+        {
+            get
+            {
+                bool preloaded = false;
+                Interop.ApplicationManager.AppInfoIsPreLoad(_handle, out preloaded);
+                return preloaded;
+            }
+        }
+        /// <summary>
+        /// GetLocalizedLabel method.
+        /// </summary>
+        /// <param name="locale">string locale.</param>
+        /// <returns>string Localized Label. It returns the label for the input locale.</returns>
+        public string GetLocalizedLabel(string locale)
+        {
+            IntPtr ptr = IntPtr.Zero;
+            Interop.ApplicationManager.AppInfoGetLocaledLabel(ApplicationId, locale, out ptr);
+            string label = Marshal.PtrToStringAuto(ptr);
+            return label;
+        }
+
+        ~InstalledApplication()
+        {
+            Dispose(false);
+        }
+
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        private void Dispose(bool disposing)
+        {
+            if(disposed)
+                return;
+            if(disposing)
+            {
+                // to be used if there are any other disposable objects
+            }
+            if (_handle != IntPtr.Zero)
+            {
+                Interop.ApplicationManager.AppInfoDestroy(_handle);
+            }
+            disposed = true;
+        }
+    }
+}
diff --git a/Tizen.Applications/Tizen.Applications/RunningApplication.cs b/Tizen.Applications/Tizen.Applications/RunningApplication.cs
new file mode 100755 (executable)
index 0000000..7b42117
--- /dev/null
@@ -0,0 +1,53 @@
+/// Copyright 2016 by Samsung Electronics, Inc.,
+///
+/// This software is the confidential and proprietary information
+/// of Samsung Electronics, Inc. ("Confidential Information"). You
+/// shall not disclose such Confidential Information and shall use
+/// it only in accordance with the terms of the license agreement
+/// you entered into with Samsung.
+
+using System;
+using System.Threading.Tasks;
+using System.Runtime.InteropServices;
+
+namespace Tizen.Applications
+{
+    /// <summary>
+    /// RunningApplication class. This class has the properties of RunningApplication.
+    /// </summary>
+    public class RunningApplication
+    {
+        private string _applicationId;
+        private int _processId;
+
+        internal RunningApplication(string applicationId, int processId)
+        {
+            _applicationId = applicationId;
+            _processId = processId;
+        }
+
+        /// <summary>
+        /// ApplicationId property.
+        /// </summary>
+        /// <returns>string application id.</returns>
+        public string ApplicationId
+        {
+            get
+            {
+                return _applicationId;
+            }
+        }
+
+        /// <summary>
+        /// ProcessId property.
+        /// </summary>
+        /// <returns>string process id.</returns>
+        public int ProcessId
+        {
+            get
+            {
+                return _processId;
+            }
+        }
+    }
+}
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 8a63e40..0394d90
@@ -20,6 +20,7 @@ BuildRequires: pkgconfig(csapi-tizen)
 BuildRequires: pkgconfig(glib-2.0)
 BuildRequires: pkgconfig(capi-appfw-application)
 BuildRequires: pkgconfig(appcore-agent)
+BuildRequires: pkgconfig(capi-appfw-app-manager)
 
 Requires: glib-2.0
 Requires: capi-appfw-application