/// <summary> /// Gets the information of the running components asynchronously. /// </summary> /// <returns>The component running context list.</returns> /// <exception cref="ArgumentException">Thrown when failed because of an invalid argument.</exception> /// <exception cref="InvalidOperationException">Thrown when failed because of the "component not exist" error or the system error.</exception> /// <exception cref="OutOfMemoryException">Thrown when failed because of out of memory.</exception> /// <exception cref="UnauthorizedAccessException">Thrown when failed because of permission denied.</exception> /// <privilege>http://tizen.org/privilege/packagemanager.info</privilege> /// <since_tizen> 6 </since_tizen> public static async Task <IEnumerable <ComponentRunningContext> > GetRunningComponentsAsync() { return(await Task.Run(() => { Interop.ComponentManager.ErrorCode err = Interop.ComponentManager.ErrorCode.None; List <ComponentRunningContext> result = new List <ComponentRunningContext>(); Interop.ComponentManager.ComponentManagerComponentContextCallback cb = (IntPtr contextHandle, IntPtr userData) => { if (contextHandle != IntPtr.Zero) { IntPtr clonedHandle = IntPtr.Zero; err = Interop.ComponentManager.ComponentContextClone(out clonedHandle, contextHandle); if (err != Interop.ComponentManager.ErrorCode.None) { Log.Warn(LogTag, "Failed to clone the ComponentInfo. err = " + err); return false; } ComponentRunningContext context = new ComponentRunningContext(clonedHandle); result.Add(context); return true; } return false; }; err = Interop.ComponentManager.ComponentManagerForeachComponentContext(cb, IntPtr.Zero); if (err != Interop.ComponentManager.ErrorCode.None) { throw ComponentManagerErrorFactory.GetException(err, "Failed to retrieve the running component context."); } return result; }).ConfigureAwait(false)); }
public void Terminate() { Interop.ComponentManager.ErrorCode err = Interop.ComponentManager.ComponentManagerTerminateComponent(_contextHandle); if (err != Interop.ComponentManager.ErrorCode.None) { throw ComponentManager.ComponentManagerErrorFactory.GetException(err, "Failed to Send the terminate request."); } }
/// <summary> /// Terminates the component if it is running in the background. /// </summary> /// <param name="context">Component ID</param> /// <exception cref="ArgumentException">Thrown when failed because of an invalid argument.</exception> /// <exception cref="InvalidOperationException">Thrown when failed because of the "component not exist" error or the system error.</exception> /// <exception cref="OutOfMemoryException">Thrown when failed because of out of memory.</exception> /// <exception cref="UnauthorizedAccessException">Thrown when failed because of permission denied.</exception> /// <privilege>http://tizen.org/privilege/appmanager.kill.bgapp</privilege> /// <remarks> /// This function returns after it just sends a request for terminating a background component. /// Platform will decide if the target component could be terminated or not according to the state of the target component. /// </remarks> /// <since_tizen> 6 </since_tizen> public static void TerminateBackgroundComponent(ComponentRunningContext context) { Interop.ComponentManager.ErrorCode err = Interop.ComponentManager.ComponentManagerTerminateBgComponent(context._contextHandle); if (err != Interop.ComponentManager.ErrorCode.None) { throw ComponentManagerErrorFactory.GetException(err, "Failed to send the terminate request."); } }
internal ComponentInfo(IntPtr infoHandle) { Interop.ComponentManager.ErrorCode err = Interop.ComponentManager.ComponentInfoGetComponentId(infoHandle, out _componentId); if (err != Interop.ComponentManager.ErrorCode.None) { throw ComponentManager.ComponentManagerErrorFactory.GetException(err, "Invalid native handle."); } _infoHandle = infoHandle; }
/// <summary> /// Checks whether the component is running or not. /// </summary> /// <param name="componentId">Component ID.</param> /// <returns>Returns true if the component is running, otherwise false.</returns> /// <exception cref="ArgumentException">Thrown when failed because of an invalid argument.</exception> /// <exception cref="InvalidOperationException">Thrown when failed because of the "component not exist" error or the system error.</exception> /// <exception cref="OutOfMemoryException">Thrown when failed because of out of memory.</exception> /// <exception cref="UnauthorizedAccessException">Thrown when failed because of permission denied.</exception> /// <privilege>http://tizen.org/privilege/packagemanager.info</privilege> /// <since_tizen> 6 </since_tizen> public static bool IsRunning(string componentId) { bool isRunning = false; Interop.ComponentManager.ErrorCode err = Interop.ComponentManager.ComponentManagerIsRunning(componentId, out isRunning); if (err != Interop.ComponentManager.ErrorCode.None) { throw ComponentManagerErrorFactory.GetException(err, "Failed to check the IsRunning of " + componentId + "."); } return(isRunning); }
/// <summary> /// A constructor of ComponentInfo that takes the component ID. /// </summary> /// <param name="componentId">Component ID.</param> /// <exception cref="ArgumentException">Thrown when failed because of an invalid argument.</exception> /// <exception cref="InvalidOperationException">Thrown when failed because of the system error.</exception> /// <exception cref="OutOfMemoryException">Thrown when failed because of out of memory.</exception> /// <exception cref="UnauthorizedAccessException">Thrown when failed because of permission denied.</exception>> /// <privilege>http://tizen.org/privilege/packagemanager.info</privilege> /// <since_tizen> 6 </since_tizen> public ComponentInfo(string componentId) { _componentId = componentId; IntPtr infoHandle = IntPtr.Zero; Interop.ComponentManager.ErrorCode err = Interop.ComponentManager.ComponentInfoCreate(_componentId, out infoHandle); if (err != Interop.ComponentManager.ErrorCode.None) { throw ComponentManager.ComponentManagerErrorFactory.GetException(err, "Failed to create the ComponentInfo."); } _infoHandle = infoHandle; }
/// <summary> /// Gets the localized label of the component for the given locale. /// </summary> /// <param name="locale">Locale.</param> /// <remarks>The format of locale is language and country code. (available value: "[2-letter lowercase language code (ISO 639-1)]-[2-letter lowercase country code (ISO 3166-alpha-2)]")</remarks> /// <returns>The localized label.</returns> /// <since_tizen> 6 </since_tizen> public string GetLocalizedLabel(string locale) { string label = string.Empty; Interop.ComponentManager.ErrorCode err = Interop.ComponentManager.ComponentInfoGetLocalizedLabel(_infoHandle, locale, out label); if (err != Interop.ComponentManager.ErrorCode.None) { Log.Warn(LogTag, "Failed to get the GetLocalizedLabel of " + _componentId + ". err = " + err); label = Label; } return(label); }
/// <summary> /// A constructor of ComponentRunningContext that takes the component ID. /// </summary> /// <param name="componentId">Component ID.</param> /// <exception cref="ArgumentException">Thrown when failed because of an invalid argument.</exception> /// <exception cref="InvalidOperationException">Thrown when failed because of the "component not exist" error or the system error.</exception> /// <exception cref="OutOfMemoryException">Thrown when failed because of out of memory.</exception> /// <exception cref="UnauthorizedAccessException">Thrown when failed because of permission denied.</exception> /// <privilege>http://tizen.org/privilege/packagemanager.info</privilege> /// <since_tizen> 6 </since_tizen> public ComponentRunningContext(string componentId) { _componentId = componentId; IntPtr contextHandle = IntPtr.Zero; Interop.ComponentManager.ErrorCode err = Interop.ComponentManager.ComponentManagerGetComponentContext(_componentId, out contextHandle); if (err != Interop.ComponentManager.ErrorCode.None) { throw ComponentManager.ComponentManagerErrorFactory.GetException(err, "Failed to create the ComponentRunningContext of " + _componentId + "."); } _contextHandle = contextHandle; }
internal static Exception GetException(Interop.ComponentManager.ErrorCode err, string message) { string errMessage = string.Format("{0} err = {1}", message, err); switch (err) { case Interop.ComponentManager.ErrorCode.InvalidParameter: case Interop.ComponentManager.ErrorCode.NoSuchComponent: return(new ArgumentException(errMessage)); case Interop.ComponentManager.ErrorCode.PermissionDenied: return(new UnauthorizedAccessException(errMessage)); case Interop.ComponentManager.ErrorCode.IoError: return(new global::System.IO.IOException(errMessage)); case Interop.ComponentManager.ErrorCode.OutOfMemory: return(new OutOfMemoryException(errMessage)); default: return(new InvalidOperationException(errMessage)); } }