微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Xamarin Android中使用使用情况统计信息管理器列出正在运行的应用程序

如何解决如何在Xamarin Android中使用使用情况统计信息管理器列出正在运行的应用程序

我似乎找不到任何好的资源来展示如何在c#中使用UsageStatsManager来获取正在运行的所有应用程序的列表。我已经看到,在Lollipop之后,活动管理器和正在运行的任务不再在版本中起作用,并且正在尝试创建需要此信息的各种任务管理器应用。

我用过:

        UsageStatsManager usageStatsManager = (UsageStatsManager)context.ApplicationContext.GetSystemService("usagestats");
        long time = TimeUtils.CurrentTimeMillis();
        long beginTime = time - 1000 * 10;


        List<UsageStats> stats = usageStatsManager.QueryUsageStats(UsageStatsInterval.Daily,beginTime,time).ToList<UsageStats>();

        foreach (var item in stats)
        {
            serviceInfo.Add(item.PackageName);
        }

TimeUtils为:

    public class TimeUtils
    {
        private static readonly DateTime Jan1st1970 = new DateTime
        (1970,1,DateTimeKind.Utc);

        public static long CurrentTimeMillis()
        {
            return (long)(DateTime.UtcNow - Jan1st1970).TotalMilliseconds;
        }
    }

这将返回null,我不确定这是否可能是权限错误?我正在使用Package_Usage_stats的用户权限:

uses-permission android:name =“ android.permission.PACKAGE_USAGE_STATS”

任何帮助将不胜感激

解决方法

使用UsageStatsManager api时,设备的用户仍需要通过 Settings 应用程序授予权限,即使该权限已被除名。

检查文档:
https://developer.android.com/reference/android/app/usage/UsageStatsManager

您可以使用以下代码引导用户使用使用权限设置页面打开应用。

btn.Click += (sender,e) =>
{
    StartActivity(new Intent(Android.Provider.Settings.ActionUsageAccessSettings));
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。