Move system-server under server/system.
[platform/framework/native/appfw.git] / inc / FAppAppManager.h
old mode 100755 (executable)
new mode 100644 (file)
index a0e0dc4..fb86252
@@ -1,5 +1,4 @@
 //
-// Open Service Platform
 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
 //
 // Licensed under the Apache License, Version 2.0 (the License);
@@ -96,18 +95,15 @@ public:
         * @remarks     The specific error code can be accessed using the GetLastResult() method.
         * @remarks     %Tizen platform defines platform-defined alias for application ID and this aliased application ID
         *                      can be used to find the AppControl. For more information, see
-        *                      <a href="../org.tizen.native.appprogramming/html/guide/app/app_control.htm">here</a>.
+        *                      <a href="../org.tizen.native.appprogramming/html/guide/app/app_controls.htm">here</a>.
         *
         * The following example demonstrates how to use the %FindAppControlN() method to find the application control.
         *
         * @code
-        * ArrayList dataList(SingleObjectDeleter);
-        * dataList.Construct();
-        * dataList.Add(new String(L"tel:1234567900"));
-        * dataList.Add(new String(L"type:voice"));
+        * String telUri = L"tel:12345678900";
         *
-        * AppControl* pAc = AppManager::FindAppControlN(L"tizen.phone", L"http://tizen.org/appcontrol/operation/call");
-        * pAc->Start(&dataList, null);
+        * AppControl* pAc = AppManager::FindAppControlN(L"tizen.phone", L"http://tizen.org/appcontrol/operation/dial");
+        * pAc->Start(&telUri, null, null, null);
         * @endcode
         */
        static AppControl* FindAppControlN(const AppId& appId, const Tizen::Base::String& operationId);
@@ -134,7 +130,6 @@ public:
         * @exception   E_SYSTEM                A system error has occurred. @n
         *                                                              Either the file operation or the DB operation has failed.
         * @remarks     The specific error code can be accessed using the GetLastResult() method.
-        * @remarks     For the delivered launch arguments, see App::GetAppArgumentListN().
         */
        static Tizen::Base::Collection::IList* FindAppControlsN(const Tizen::Base::String* pOperationId, const Tizen::Base::String* pCategory, const Tizen::Base::String* pDataType, const Tizen::Base::String* pUriPattern);
 
@@ -148,7 +143,7 @@ public:
         *                              Instead of using this method, use AppControl::FindAndStart().
         * @since               2.0
         * @privlevel   public
-        * @privilege   http://tizen.org/privilege/application.launch
+        * @privilege   %http://tizen.org/privilege/application.launch
         *
         * @return      An error code
         * @param[in]   uriData                 The URI that has a maximum size of @c 1024 bytes
@@ -189,7 +184,7 @@ public:
         *                              Instead of using this method, use AppControl::FindAndStart().
         * @since               2.0
         * @privlevel   public
-        * @privilege   http://tizen.org/privilege/application.launch
+        * @privilege   %http://tizen.org/privilege/application.launch
         *
         * @return      An error code
         * @param[in]   pOperationId    The operation ID
@@ -263,7 +258,9 @@ public:
        * @exception    E_SUCCESS                       The method is successful.
        * @exception    E_APP_NOT_INSTALLED     The expected shared directory cannot be found
        *                                                                       because the application specified with @c appId cannot be installed.
-       * @remarks              The specific error code can be accessed using the GetLastResult() method.
+       * @remarks              
+       *                               - The returned path can be invalid when the application with specified with @c appId is uninstalled.
+       *                               - The specific error code can be accessed using the GetLastResult() method.
        */
        static Tizen::Base::String GetAppSharedPath(const AppId& appId);
 
@@ -288,7 +285,7 @@ public:
         *                              Instead of using this method, use %LaunchApplication() without launch arguments or AppControl::Start().
         * @since       2.0
         * @privlevel   public
-        * @privilege   http://tizen.org/privilege/application.launch
+        * @privilege   %http://tizen.org/privilege/application.launch
         *
         * @return      An error code
         * @param[in]   appId                           The application's ID to execute
@@ -311,7 +308,7 @@ public:
         *
         * @since       2.0
         * @privlevel   public
-        * @privilege   http://tizen.org/privilege/application.launch
+        * @privilege   %http://tizen.org/privilege/application.launch
         *
         * @return      An error code
         * @param[in]   appId                           The application's ID to execute
@@ -329,7 +326,8 @@ public:
         *
         * @since       2.0
         * @privlevel   partner
-        * @privilege   http://tizen.org/privilege/application.kill
+        * @privilege   %http://tizen.org/privilege/appmanager.kill @n
+        *                              (%http://tizen.org/privilege/application.kill is deprecated.)
         *
         * @return      An error code
         * @param[in]   appId                           The application's ID to execute
@@ -372,7 +370,8 @@ public:
         *
         * @since       2.0
         * @privlevel   public
-        * @privilege   http://tizen.org/privilege/application.launch
+        * @privilege   %http://tizen.org/privilege/application.launch
+        * @feature     %http://tizen.org/feature/network.nfc for L"NFC='command'" or %http://tizen.org/feature/usb.accessory for "Serial='command'" in the value of @c condition
         *
         * @return              An error code
         * @param[in]   condition         The launch condition for the application @n
@@ -384,7 +383,7 @@ public:
                                      <tr><td>L"DueTime='mm/dd/yyyy hh:mm:ss' LaunchPeriod='mm'"</td>
                                      <td>The specific condition is the time period after due time.</td></tr>
                                      <tr><td>L"WeeklyTime='EEE HH:mm:ss'"</td>
-                                     <td>The specified condition is a day of week with specific time to launch an application for every week. For multiple description, "," delimiter can be used like following example.<br>i"Mon 09:00:00, Tue 09:00:00, Wed 09:00:00, Thu 09:00:00, Fir 09:00:00"<br> The format of a day of week is support following string only.<br>Mon: Monday<br>Tue: Tuesday<br>Wed: Wednesday<br>Thu: Thursday<br>Fri: Friday<br>Sat: Saturday<br>Sun: Sunday</td></tr>
+                                     <td>The specified condition is a day of a week with a specific time at which the application is launched on a weekly basis. For multiple descriptions, "," delimiter can be used as shown in the following example: <br>i"'Mon 09:00:00', 'Tue 09:00:00', 'Wed 09:00:00', 'Thu 09:00:00', 'Fri 09:00:00'"<br> To specify the day of the week, it must be in one of the following supported string format: <br>Mon: Monday<br>Tue: Tuesday<br>Wed: Wednesday<br>Thu: Thursday<br>Fri: Friday<br>Sat: Saturday<br>Sun: Sunday</td></tr>
                                      <tr><td>L"Serial='command'"</td><td>The specified condition is a serial
                                      communication input command.</td></tr>
                                      <tr><td>L"NFC='command'"</td><td>The specified condition is a Near Field Communication (NFC) tag that has the NFC Data Exchange Format (NDEF) data.
@@ -404,6 +403,7 @@ public:
         * @exception   E_MAX_EXCEEDED          The size of @c pArguments has exceeded the maximum limit.
         * @exception   E_SYSTEM                                A system error has occurred.
         * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
+        * @exception   E_UNSUPPORTED_OPERATION   The Emulator or target device does not support the required feature. For more information, see <a href="../org.tizen.gettingstarted/html/tizen_overview/application_filtering.htm">Application Filtering</a>. @b Since: @b 2.1
         *
         * @remarks             When the registered application is about to be launched, the registered launch condition and arguments are given as parameters to IAppLaunchConditionEventListener::OnAppLaunchConditionMetN().
         * @remarks             The newly introduced launch condition does not work on the previous SDK version and the E_INVALID_CONDITION exception is returned.
@@ -411,9 +411,10 @@ public:
         * @remarks             The launch period requires more consideration because an inappropriate short period value may lead
         *                              to an adverse effect on the device battery.
         * @remarks             For the NFC launch condition, the detected NDEF message can be acquired using the @c pExtraData parameter of the %IAppLaunchConditionEventListener::OnAppLaunchConditionMetN() method.
+        * @remarks             Before calling this method, check whether the feature is supported by Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&).
         * @see                 UnregisterAppLaunch()
         * @see                 IsAppLaunchRegistered()
-        * @see                 LaunchApplication()
+        * @see                 LaunchApplication(const AppId&, LaunchOption);
         * @see                 Tizen::Base::DateTime::ToString()
         * @see                 Tizen::Io::SerialPort
         *
@@ -440,13 +441,14 @@ public:
         *
         * @since       2.0
         * @privlevel   public
-        * @privilege   http://tizen.org/privilege/application.launch
+        * @privilege   %http://tizen.org/privilege/application.launch
         *
         * @return              An error code
-        * @exception   E_SUCCESS                       The method is successful.
+        * @exception   E_SUCCESS                       Either of the following conditions has occurred:
+        *                                                                      - The method is successful.
+        *                                                                      - There is no registered launch condition.
         * @exception   E_SYSTEM                        A system error has occurred.
         * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @remarks             E_SUCCESS                       An error occurs when there is no registered launch condition.
         * @see                 RegisterAppLaunch()
         * @see                 IsAppLaunchRegistered()
         */
@@ -457,7 +459,7 @@ public:
         *
         * @since               2.0
         * @privlevel   public
-        * @privilege   http://tizen.org/privilege/application.launch
+        * @privilege   %http://tizen.org/privilege/application.launch
         *
         * @return              An error code
         * @param[in]   condition                       The launch condition for the application
@@ -494,7 +496,8 @@ public:
         *
         * @since               2.0
         * @privlevel   partner
-        * @privilege   http://tizen.org/privilege/appmanager.launch
+        * @privilege   %http://tizen.org/privilege/appmanager.launch
+        * @feature     %http://tizen.org/feature/network.nfc for L"NFC='command'" or %http://tizen.org/feature/usb.accessory for L"Serial='command'" in the value of @c condition
         *
         * @return     An error code
         * @param[in]  appId          The ID of the application registered for launch
@@ -506,6 +509,8 @@ public:
                                     <td>The specified condition is the local due time.</td></tr>
                                     <tr><td>L"DueTime='mm/dd/yyyy hh:mm:ss' LaunchPeriod='mm'"</td>
                                     <td>The specific condition is the time period after due time.</td></tr>
+                                    <tr><td>L"WeeklyTime='EEE HH:mm:ss'"</td>
+                                    <td>The specified condition is a day of a week with a specific time at which the application is launched on a weekly basis. For multiple descriptions, "," delimiter can be used as shown in the following example: <br>i"'Mon 09:00:00', 'Tue 09:00:00', 'Wed 09:00:00', 'Thu 09:00:00', 'Fri 09:00:00'"<br> To specify the day of the week, it must be in one of the following supported string format: <br>Mon: Monday<br>Tue: Tuesday<br>Wed: Wednesday<br>Thu: Thursday<br>Fri: Friday<br>Sat: Saturday<br>Sun: Sunday</td></tr>
                                     <tr><td>L"Serial='command'"</td><td>The specified condition is a serial
                                     communication input command.</td></tr>
                                     <tr><td>L"NFC='command'"</td><td>The specified condition is a Near Field Communication (NFC) tag that has the NFC Data Exchange Format (NDEF) data.
@@ -525,6 +530,7 @@ public:
         * @exception  E_MAX_EXCEEDED           The size of @c pArguments has exceeded the maximum limit.
         * @exception  E_SYSTEM                         A system error has occurred.
         * @exception  E_PRIVILEGE_DENIED       The application does not have the privilege to call this method.
+        * @exception    E_UNSUPPORTED_OPERATION   The Emulator or target device does not support the required feature. For more information, see <a href="../org.tizen.gettingstarted/html/tizen_overview/application_filtering.htm">Application Filtering</a>. @b Since: @b 2.1
         *
         * @remarks    When the registered application is about to be launched, the registered launch condition and arguments are given as parameters to IAppLaunchConditionEventListener::OnAppLaunchConditionMetN().
         * @remarks    The newly introduced launch condition does not work on the previous SDK version and the @c E_INVALID_CONDITION exception is returned.
@@ -532,9 +538,10 @@ public:
         * @remarks    The launch period requires more consideration because an inappropriate short period value may lead
         *             to an adverse effect on the device battery.
         * @remarks    For the NFC launch condition, the detected NDEF message can be acquired using the @c pExtraData parameter of the %IAppLaunchConditionEventListener::OnAppLaunchConditionMetN() method.
+        * @remarks     Before calling this method, check whether the feature is supported by Tizen::System::SystemInfo::GetValue(const Tizen::Base::String&, bool&).
         * @see        UnregisterAppLaunch()
         * @see        IsAppLaunchRegistered()
-        * @see        LaunchApplication()
+        * @see        LaunchApplication(const AppId&, LaunchOption);
         * @see        IAppLaunchConditionEventListener::OnAppLaunchConditionMetN()
         * @see        Tizen::Base::DateTime::ToString()
         * @see        Tizen::Io::SerialPort
@@ -546,7 +553,7 @@ public:
         *
         * @since               2.0
         * @privlevel   partner
-        * @privilege   http://tizen.org/privilege/appmanager.launch
+        * @privilege   %http://tizen.org/privilege/appmanager.launch
         *
         * @return     An error code
         * @param[in]  appId          The application ID
@@ -569,7 +576,7 @@ public:
         *
         * @since               2.0
         * @privlevel   partner
-        * @privilege   http://tizen.org/privilege/appmanager.launch
+        * @privilege   %http://tizen.org/privilege/appmanager.launch
         *
         * @return     @c true if a condition is already registered to the specified application with the specified condition, @n
         *             else @c false
@@ -599,7 +606,6 @@ public:
         * @exception  E_SUCCESS                        The method is successful.
         * @exception  E_OBJ_ALREADY_EXIST      The listener is already set.
         * @exception  E_SYSTEM         A system error has occurred.
-        * @see         IAppCheckpointEventListener
         *
         */
        result SetCheckpointEventListener(IAppCheckpointEventListener& listener);
@@ -651,7 +657,7 @@ public:
         * @since       2.0
         *
         * @privlevel   partner
-        * @privilege   http://tizen.org/privilege/appusage
+        * @privilege   %http://tizen.org/privilege/appusage
         *
         * @return              An error code
         * @param[in]   listener                                The event listener
@@ -663,7 +669,6 @@ public:
         * @remarks             Active application is the top most window with focus.
         * @see                 GetActiveApp()
         * @see                 RemoveActiveAppEventListener()
-        * @see                 IActiveAppEventListener
         */
        result AddActiveAppEventListener(IActiveAppEventListener& listener);
 
@@ -673,7 +678,7 @@ public:
         * @since       2.0
         *
         * @privlevel   partner
-        * @privilege   http://tizen.org/privilege/appusage
+        * @privilege   %http://tizen.org/privilege/appusage
         *
         * @return              An error code
         * @param[in]   listener                                The event listener
@@ -683,7 +688,6 @@ public:
         * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
         * @see                 GetActiveApp()
         * @see                 AddActiveAppEventListener()
-        * @see                 IActiveAppEventListener
         */
        result RemoveActiveAppEventListener(IActiveAppEventListener& listener);
 
@@ -693,7 +697,7 @@ public:
         * @since       2.0
         *
         * @privlevel   partner
-        * @privilege   http://tizen.org/privilege/appusage
+        * @privilege   %http://tizen.org/privilege/appusage
         *
         * @return              An error code
         * @param[out]  appId                                   The AppId of the active application
@@ -706,6 +710,42 @@ public:
         */
        result GetActiveApp(AppId& appId);
 
+       /**
+        * Checks whether the specified application is declared as preferred application for any AppControl resolution
+        *
+        * @since         2.2
+        * @privlevel      platform
+        * @privilege     %http://tizen.org/privilege/appmanager.setting
+        *
+        * @return        @c true if the application is running, @n
+        *           else @c false
+        * @param[in]    appId                         Application ID
+        * @exception    E_SUCCESS                   The method is successful.
+        * @exception    E_SYSTEM                    The method cannot proceed due to a severe system error.
+        * @exception    E_APP_NOT_INSTALLED    The specified application is not installed.
+        * @exception    E_PRIVILEGE_DENIED       The application does not have the privilege to call this method.
+        * @remarks      The specific error code can be accessed using the GetLastResult() method.
+        * @remarks      For more information on AppControl resolution, see <a href="../org.tizen.native.appprogramming/html/guide/app/app_controls.htm">Application Controls</a>.
+        */
+       bool IsUserPreferredAppForAppControlResolution(const AppId& appId) const;           
+
+       /**
+        * Clear user preference for all AppControl resolutions on the specified application.
+        *
+        * @since         2.2
+        * @privlevel      platform
+        * @privilege     %http://tizen.org/privilege/appmanager.setting
+        *
+        * @return        An error code
+        * @param[in]    appId                         The preferred application's ID
+        * @exception    E_SUCCESS                   The method is successful. 
+        * @exception    E_SYSTEM                    The method cannot proceed due to a severe system error.
+        * @exception    E_APP_NOT_INSTALLED    The specified application is not installed.
+        * @exception    E_PRIVILEGE_DENIED       The application does not have the privilege to call this method.
+        * @remarks      For more information on AppControl resolution, see <a href="../org.tizen.native.appprogramming/html/guide/app/app_controls.htm">Application Controls</a>.
+        */
+       result ClearUserPreferenceForAppControlResolution(const AppId& appId);
+
 private:
        /**
         * This default constructor is intentionally declared as private to implement the %Singleton semantic.