/// <summary>
        /// Query top 10 battery consuming applications since the last time when the device has fully charged
        /// </summary>
        /// <returns>List of application history information</returns>
        public List <StatsInfoItem> QueryBatteryConsumingApplications()
        {
            try
            {
                // Create a BatteryStatistics instance
                var batteryStats = new BatteryStatistics();
                // Query top 10 battery consuming applications since the last time when the device has fully charged
                var batteryStatsResult = batteryStats.Query(BatteryStatistics.GetLastFullyChargedTime(), DateTime.Now, 10);

                List <StatsInfoItem> result = new List <StatsInfoItem>();
                foreach (var record in batteryStatsResult)
                {
                    var appInfo = new ApplicationInfo(record.AppId);

                    string name = (!appInfo.Label.Equals(string.Empty)) ? appInfo.Label : record.AppId;
                    string info = "Consumption: " + record.Consumption + " %";

                    // Add each record to the result list
                    result.Add(new StatsInfoItem(name, info));

                    appInfo.Dispose();
                }

                return(result);
            }
            catch (Exception e)
            {
                LogImplementation.DLog(e.Message.ToString());
            }

            return(null);
        }
        /// <summary>
        /// Query top 10 frequently used applications during the last 3 days
        /// </summary>
        /// <returns>List of application history information</returns>
        public List <StatsInfoItem> QueryFrequentlyUsedApplications()
        {
            try
            {
                // Create an UsageStatistics instance
                var usageStats = new UsageStatistics(UsageStatistics.SortOrderType.LaunchCountMost);
                // Query top 10 frequently used applications during the last 3 days
                var usageStatsResult = usageStats.Query(DateTime.Now.AddDays(-3), DateTime.Now, 10);

                List <StatsInfoItem> result = new List <StatsInfoItem>();
                foreach (var record in usageStatsResult)
                {
                    var appInfo = new ApplicationInfo(record.AppId);

                    string name = (!appInfo.Label.Equals(string.Empty)) ? appInfo.Label : record.AppId;
                    string info = "LaunchCount: " + record.LaunchCount + "\r\n";
                    info += "LastLaunchTime: " + record.LastLaunchTime + "\r\n";
                    info += "Duration: " + record.Duration + " secs";

                    // Add each record to the result list
                    result.Add(new StatsInfoItem(name, info));

                    appInfo.Dispose();
                }

                return(result);
            }
            catch (Exception e)
            {
                LogImplementation.DLog(e.Message.ToString());
            }

            return(null);
        }
        /// <summary>
        /// Check permission about http://tizen.org/privilege/apphistory.read privilege
        /// </summary>
        public void CheckPermission()
        {
            try
            {
                CheckResult result = PrivacyPrivilegeManager.CheckPermission("http://tizen.org/privilege/apphistory.read");

                switch (result)
                {
                case CheckResult.Allow:
                    break;

                case CheckResult.Deny:
                    break;

                case CheckResult.Ask:
                    PrivacyPrivilegeManager.RequestPermission("http://tizen.org/privilege/apphistory.read");
                    break;
                }
            }
            catch (Exception e)
            {
                LogImplementation.DLog(e.Message.ToString());
            }
        }