From 4173d1fbc061092b86c956d7237daeed3f5b24ac Mon Sep 17 00:00:00 2001 From: Hyunho Kang Date: Tue, 4 Dec 2018 17:08:24 +0900 Subject: [PATCH] [Applications.Common] Add missing application APIs (#547) * Add missing app_get* APIs - app_get_device_orientation - app_get_name - app_get_version Signed-off-by: hyunho * Fix typo Signed-off-by: hyunho * Add eventsystem classes Signed-off-by: hyunho * Add missing appmanger APIs Signed-off-by: hyunho * Modify eventsystem to event Signed-off-by: hyunho * Remove Event class Signed-off-by: hyunho * Update file permission Signed-off-by: hyunho * Update terminate bg method desc Signed-off-by: hyunho * Modify terminate bg to static method Signed-off-by: hyunho * Fix remark comment Signed-off-by: hyunho * Add remarks for TerminateBackgroundApplication Signed-off-by: hyunho * Add documentation about parameter and returns Signed-off-by: hyunho --- .../Interop/Interop.AppControl.cs | 0 .../Interop/Interop.Bundle.cs | 0 .../Interop/Interop.Glib.cs | 0 .../Interop/Interop.Libc.cs | 0 .../Tizen.Applications/AppControl.cs | 0 .../Tizen.Applications/AppControlData.cs | 0 .../Tizen.Applications/AppControlLaunchMode.cs | 0 .../Tizen.Applications/AppControlOperations.cs | 0 .../AppControlReceivedEventArgs.cs | 0 .../Tizen.Applications/AppControlReplyCallback.cs | 0 .../Tizen.Applications/AppControlReplyResult.cs | 0 .../Tizen.Applications/Application.cs | 29 ++++++++++++ .../Tizen.Applications/ApplicationInfo.cs | 1 + .../ApplicationInfoMetadataFilter.cs | 0 .../ApplicationLaunchedEventArgs.cs | 0 .../Tizen.Applications/ApplicationManager.cs | 55 ++++++++++++++++++++++ .../ApplicationRunningContext.cs | 33 ++++++++++++- .../ApplicationTerminatedEventArgs.cs | 0 .../Tizen.Applications/ApplicationType.cs | 0 .../Tizen.Applications/Bundle.cs | 0 .../Tizen.Applications/CoreApplication.cs | 5 ++ .../Tizen.Applications/DeviceOrientation.cs | 0 .../DeviceOrientationEventArgs.cs | 0 .../Tizen.Applications/DirectoryInfo.cs | 0 .../Tizen.Applications/LocaleChangedEventArgs.cs | 0 .../Tizen.Applications/LowBatteryEventArgs.cs | 0 .../Tizen.Applications/LowBatteryStatus.cs | 0 .../Tizen.Applications/LowMemoryEventArgs.cs | 0 .../Tizen.Applications/LowMemoryStatus.cs | 0 .../Tizen.Applications/ReceivedAppControl.cs | 1 + .../Tizen.Applications/RecentApplicationControl.cs | 0 .../Tizen.Applications/RecentApplicationInfo.cs | 0 .../RegionFormatChangedEventArgs.cs | 0 .../Tizen.Applications/ResourceManager.cs | 0 .../Tizen.Applications/SafeAppControlHandle.cs | 0 .../Tizen.Applications/SafeBundleHandle.cs | 0 36 files changed, 123 insertions(+), 1 deletion(-) mode change 100755 => 100644 src/Tizen.Applications.Common/Interop/Interop.AppControl.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Interop/Interop.Bundle.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Interop/Interop.Glib.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Interop/Interop.Libc.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/AppControl.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/AppControlData.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/AppControlLaunchMode.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/AppControlOperations.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/AppControlReceivedEventArgs.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/AppControlReplyCallback.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/AppControlReplyResult.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/Application.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfoMetadataFilter.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/ApplicationLaunchedEventArgs.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/ApplicationManager.cs mode change 100644 => 100755 src/Tizen.Applications.Common/Tizen.Applications/ApplicationRunningContext.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/ApplicationTerminatedEventArgs.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/ApplicationType.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/Bundle.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/DeviceOrientation.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/DeviceOrientationEventArgs.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/DirectoryInfo.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/LocaleChangedEventArgs.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/LowBatteryEventArgs.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/LowBatteryStatus.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/LowMemoryEventArgs.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/LowMemoryStatus.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/ReceivedAppControl.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/RecentApplicationControl.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/RecentApplicationInfo.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/RegionFormatChangedEventArgs.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/ResourceManager.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/SafeAppControlHandle.cs mode change 100755 => 100644 src/Tizen.Applications.Common/Tizen.Applications/SafeBundleHandle.cs diff --git a/src/Tizen.Applications.Common/Interop/Interop.AppControl.cs b/src/Tizen.Applications.Common/Interop/Interop.AppControl.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Interop/Interop.Bundle.cs b/src/Tizen.Applications.Common/Interop/Interop.Bundle.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Interop/Interop.Glib.cs b/src/Tizen.Applications.Common/Interop/Interop.Glib.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Interop/Interop.Libc.cs b/src/Tizen.Applications.Common/Interop/Interop.Libc.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/AppControl.cs b/src/Tizen.Applications.Common/Tizen.Applications/AppControl.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/AppControlData.cs b/src/Tizen.Applications.Common/Tizen.Applications/AppControlData.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/AppControlLaunchMode.cs b/src/Tizen.Applications.Common/Tizen.Applications/AppControlLaunchMode.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/AppControlOperations.cs b/src/Tizen.Applications.Common/Tizen.Applications/AppControlOperations.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/AppControlReceivedEventArgs.cs b/src/Tizen.Applications.Common/Tizen.Applications/AppControlReceivedEventArgs.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/AppControlReplyCallback.cs b/src/Tizen.Applications.Common/Tizen.Applications/AppControlReplyCallback.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/AppControlReplyResult.cs b/src/Tizen.Applications.Common/Tizen.Applications/AppControlReplyResult.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/Application.cs b/src/Tizen.Applications.Common/Tizen.Applications/Application.cs old mode 100755 new mode 100644 index ab71a73..dd21e5b --- a/src/Tizen.Applications.Common/Tizen.Applications/Application.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/Application.cs @@ -83,6 +83,35 @@ namespace Tizen.Applications } /// + /// Gets the name of current application. + /// + /// 6 + public string Name + { + get + { + string name; + Interop.AppCommon.AppGetName(out name); + return name; + } + } + + /// + /// Gets the version of current application. + /// + /// 6 + public string Version + { + get + { + string version; + Interop.AppCommon.AppGetVersion(out version); + return version; + } + } + + + /// /// Runs the application's main loop. /// /// Arguments from commandline. diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfo.cs b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfo.cs index bb360b4..b26f480 100644 --- a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfo.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfo.cs @@ -372,6 +372,7 @@ namespace Tizen.Applications /// Gets the localized label of the application for the given locale. /// /// Locale. + /// The localized label. /// 3 public string GetLocalizedLabel(string locale) { diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfoMetadataFilter.cs b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationInfoMetadataFilter.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationLaunchedEventArgs.cs b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationLaunchedEventArgs.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationManager.cs b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationManager.cs old mode 100755 new mode 100644 index 41caa28..47aaa92 --- a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationManager.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationManager.cs @@ -19,6 +19,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Runtime.InteropServices; using System.Threading.Tasks; +using static Interop.ApplicationManager; namespace Tizen.Applications { @@ -166,6 +167,7 @@ namespace Tizen.Applications /// /// Gets the information of the installed applications asynchronously. /// + /// The installed application info list. /// 3 public static async Task> GetInstalledApplicationsAsync() { @@ -201,9 +203,40 @@ namespace Tizen.Applications } /// + /// Terminates the application if it is running on background. + /// + /// ApplicationRunningContext object + /// Thrown when failed of invalid argument. + /// Thrown when failed because of permission denied. + /// Thrown when failed because of system error. + /// http://tizen.org/privilege/appmanager.kill.bgapp + /// + /// This function returns after it just sends a request for terminating a background application. + /// Platform will decide if the target application could be terminated or not according to the state of the target application. + /// + /// 6 + public static void TerminateBackgroundApplication(ApplicationRunningContext app) + { + ErrorCode err = Interop.ApplicationManager.AppManagerRequestTerminateBgApp(app._contextHandle); + if (err != Interop.ApplicationManager.ErrorCode.None) + { + switch (err) + { + case Interop.ApplicationManager.ErrorCode.InvalidParameter: + throw new ArgumentException("Invalid argument."); + case Interop.ApplicationManager.ErrorCode.PermissionDenied: + throw new UnauthorizedAccessException("Permission denied."); + default: + throw new InvalidOperationException("Invalid Operation."); + } + } + } + + /// /// Gets the information of the installed applications with the ApplicationInfoFilter asynchronously. /// /// Key-value pairs for filtering. + /// The installed application info list. /// 3 public static async Task> GetInstalledApplicationsAsync(ApplicationInfoFilter filter) { @@ -237,6 +270,7 @@ namespace Tizen.Applications /// Gets the information of the installed applications with the ApplicationInfoMetadataFilter asynchronously. /// /// Key-value pairs for filtering. + /// The installed application info list. /// 3 public static async Task> GetInstalledApplicationsAsync(ApplicationInfoMetadataFilter filter) { @@ -269,6 +303,7 @@ namespace Tizen.Applications /// /// Gets the information of the running applications asynchronously. /// + /// The application running context list. /// 3 public static async Task> GetRunningApplicationsAsync() { @@ -307,6 +342,7 @@ namespace Tizen.Applications /// /// Gets the information of the running applications including subapp asynchronously. /// + /// The application running context list. /// 3 public static async Task> GetAllRunningApplicationsAsync() { @@ -346,6 +382,7 @@ namespace Tizen.Applications /// Gets the information of the specified application with the application ID. /// /// Application ID. + /// The application info. /// 3 public static ApplicationInfo GetInstalledApplication(string applicationId) { @@ -377,6 +414,24 @@ namespace Tizen.Applications return isRunning; } + /// + /// Returns the application id. + /// + /// The application pid. + /// Returns the application id. + /// Thrown when the given parameter is invalid. + /// 6 + public static string GetAppId(int processId) + { + string appid; + Interop.ApplicationManager.ErrorCode err = Interop.ApplicationManager.AppManagerGetAppId(processId, out appid); + if (err != Interop.ApplicationManager.ErrorCode.None) + { + throw ApplicationManagerErrorFactory.GetException(err, "fail to get appid(" + processId + ")"); + } + return appid; + } + private static void RegisterApplicationChangedEvent() { Interop.ApplicationManager.ErrorCode err = Interop.ApplicationManager.ErrorCode.None; diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationRunningContext.cs b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationRunningContext.cs old mode 100644 new mode 100755 index b294259..c7196e7 --- a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationRunningContext.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationRunningContext.cs @@ -28,7 +28,7 @@ namespace Tizen.Applications { private const string LogTag = "Tizen.Applications"; private bool _disposed = false; - private IntPtr _contextHandle = IntPtr.Zero; + internal IntPtr _contextHandle = IntPtr.Zero; private Interop.ApplicationManager.ErrorCode err = Interop.ApplicationManager.ErrorCode.None; internal ApplicationRunningContext(IntPtr contextHandle) @@ -157,6 +157,34 @@ namespace Tizen.Applications } /// + /// Gets whether the application is terminated. + /// + /// 6 + public bool IsTerminated + { + get + { + bool isRunning = false; + string appid = string.Empty; + err = Interop.ApplicationManager.AppContextGetAppId(_contextHandle, out appid); + if (err != Interop.ApplicationManager.ErrorCode.None) + { + Log.Warn(LogTag, "Failed to get the application id. err = " + err); + } + else + { + Interop.ApplicationManager.AppManagerIsRunning(appid, out isRunning); + err = Interop.ApplicationManager.AppContextGetAppId(_contextHandle, out appid); + if (err != Interop.ApplicationManager.ErrorCode.None) + { + Log.Warn(LogTag, "Failed to get is running. err = " + err); + } + } + return !isRunning; + } + } + + /// /// Gets the package ID of the application. /// /// 3 @@ -195,6 +223,9 @@ namespace Tizen.Applications /// /// Gets the state of the application. /// + /// + /// Note that application's state might be changed after you get app_context. This API just returns the state of application when you get the app_context. + /// /// 3 public AppState State { diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationTerminatedEventArgs.cs b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationTerminatedEventArgs.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ApplicationType.cs b/src/Tizen.Applications.Common/Tizen.Applications/ApplicationType.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/Bundle.cs b/src/Tizen.Applications.Common/Tizen.Applications/Bundle.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/CoreApplication.cs b/src/Tizen.Applications.Common/Tizen.Applications/CoreApplication.cs index 298f635..732c37c 100644 --- a/src/Tizen.Applications.Common/Tizen.Applications/CoreApplication.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/CoreApplication.cs @@ -171,6 +171,7 @@ namespace Tizen.Applications /// Overrides this method if want to handle behavior when the system memory is low. /// If base.OnLowMemory() is not called, the event 'LowMemory' will not be emitted. /// + /// The low memory event argument /// 3 protected virtual void OnLowMemory(LowMemoryEventArgs e) { @@ -182,6 +183,7 @@ namespace Tizen.Applications /// Overrides this method if want to handle behavior when the system battery is low. /// If base.OnLowBattery() is not called, the event 'LowBattery' will not be emitted. /// + /// The low battery event argument /// 3 protected virtual void OnLowBattery(LowBatteryEventArgs e) { @@ -192,6 +194,7 @@ namespace Tizen.Applications /// Overrides this method if want to handle behavior when the system language is changed. /// If base.OnLocaleChanged() is not called, the event 'LocaleChanged' will not be emitted. /// + /// The locale changed event argument /// 3 protected virtual void OnLocaleChanged(LocaleChangedEventArgs e) { @@ -203,6 +206,7 @@ namespace Tizen.Applications /// Overrides this method if want to handle behavior when the region format is changed. /// If base.OnRegionFormatChanged() is not called, the event 'RegionFormatChanged' will not be emitted. /// + /// The region format changed event argument /// 3 protected virtual void OnRegionFormatChanged(RegionFormatChangedEventArgs e) { @@ -213,6 +217,7 @@ namespace Tizen.Applications /// Overrides this method if want to handle behavior when the device orientation is changed. /// If base.OnRegionFormatChanged() is not called, the event 'RegionFormatChanged' will not be emitted. /// + /// The device orientation changed event argument /// 3 protected virtual void OnDeviceOrientationChanged(DeviceOrientationEventArgs e) { diff --git a/src/Tizen.Applications.Common/Tizen.Applications/DeviceOrientation.cs b/src/Tizen.Applications.Common/Tizen.Applications/DeviceOrientation.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/DeviceOrientationEventArgs.cs b/src/Tizen.Applications.Common/Tizen.Applications/DeviceOrientationEventArgs.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/DirectoryInfo.cs b/src/Tizen.Applications.Common/Tizen.Applications/DirectoryInfo.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/LocaleChangedEventArgs.cs b/src/Tizen.Applications.Common/Tizen.Applications/LocaleChangedEventArgs.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/LowBatteryEventArgs.cs b/src/Tizen.Applications.Common/Tizen.Applications/LowBatteryEventArgs.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/LowBatteryStatus.cs b/src/Tizen.Applications.Common/Tizen.Applications/LowBatteryStatus.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/LowMemoryEventArgs.cs b/src/Tizen.Applications.Common/Tizen.Applications/LowMemoryEventArgs.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/LowMemoryStatus.cs b/src/Tizen.Applications.Common/Tizen.Applications/LowMemoryStatus.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ReceivedAppControl.cs b/src/Tizen.Applications.Common/Tizen.Applications/ReceivedAppControl.cs old mode 100755 new mode 100644 index c35dadf..e137811 --- a/src/Tizen.Applications.Common/Tizen.Applications/ReceivedAppControl.cs +++ b/src/Tizen.Applications.Common/Tizen.Applications/ReceivedAppControl.cs @@ -51,6 +51,7 @@ namespace Tizen.Applications /// /// Initializes a ReceivedAppControl class. /// + /// App control handle /// 3 public ReceivedAppControl(SafeAppControlHandle handle) : base(handle) { diff --git a/src/Tizen.Applications.Common/Tizen.Applications/RecentApplicationControl.cs b/src/Tizen.Applications.Common/Tizen.Applications/RecentApplicationControl.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/RecentApplicationInfo.cs b/src/Tizen.Applications.Common/Tizen.Applications/RecentApplicationInfo.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/RegionFormatChangedEventArgs.cs b/src/Tizen.Applications.Common/Tizen.Applications/RegionFormatChangedEventArgs.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/ResourceManager.cs b/src/Tizen.Applications.Common/Tizen.Applications/ResourceManager.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/SafeAppControlHandle.cs b/src/Tizen.Applications.Common/Tizen.Applications/SafeAppControlHandle.cs old mode 100755 new mode 100644 diff --git a/src/Tizen.Applications.Common/Tizen.Applications/SafeBundleHandle.cs b/src/Tizen.Applications.Common/Tizen.Applications/SafeBundleHandle.cs old mode 100755 new mode 100644 -- 2.7.4