Exemple #1
0
        /// <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.");
     }
 }
Exemple #3
0
 /// <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.");
     }
 }
Exemple #4
0
 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;
 }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        /// <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;
        }
Exemple #7
0
        /// <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;
        }
Exemple #9
0
            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));
                }
            }