Android 通过UsageStatsManager获取App使用情况

Android 应用使用情况统计 本篇文章简单记录下android中usageStatsManager的简单使用.UsageStatsManager提供对设备使用历史记录和统计信息的访问,时间周期为days, weeks, months, and years. 阅读详情

Android 5.0之后提供了UsageStatsManager来获取App使用情况,5.0之前需要App有系统权限,不再讨论。

此功能需要在设置的(允许查看使用情况的应用)里打开,在很多手机设置里没有发现这一入口。
需要在代码里打开,注意要判断一下系统版本。

if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){
   startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));
}

首先需要在AndroidManifest里声明权限

<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />

如果不声明权限,会导致打开的设置界面没有我们的应用。

下面就是获取使用数据的代码

UsageStatsManager m=(UsageStatsManager)context.getSystemService(Context.USAGE_STATS_SERVICE);
long time =System.currentTimeMillis()-24*60*60*1000;
List<UsageStats> list=m.queryUsageStats(UsageStatsManager.INTERVAL_BEST, time, System.currentTimeMillis());

queryUsageStats第一个参数是根据后面的参数获取合适数据的来源,有按天,按年,按月等。
执行后就获取到了一个包含最近一天的有启动过的app的历史数据的list。
需要注意的是5.0以上,如果不打开此设置,queryUsageStats获取到的是size为0的list;

list.get(i).getPackageName();
list.get(i).getTotalTimeInForeground()

通过UsageStats对象可以获取到包名,使用总时长,最后一次使用时间等。

查看UsageStats类发现有mLaunchCount属性为应用启动次数,但UsageStats并未提供方法来获取;
这里可以通过反射来拿到。

Field field = list.get(i).getClass().getDeclaredField("mLaunchCount");

后续会观察各手机系统数据获取情况。

关于 UsageStatsManager.queryUsageStats 的注意事项及 UsageStatsService 的简单原理 问题背景: 目前需求统计应用的当天使用情况,在 5.0 以上有权限 android.permission.PACKAGE_USAGE_STATS,获取到该权限后可以通过 UsageStatsManager.queryUsageStats(int intervalType, long beginTime, long endTime) 方法查询到应用的使用情况。 问题描述: 第一天下午使用一些应用后,... 阅读详情

相关推荐

使用UsageStatsMannager获取应用使用时长

UsageStatsManager.queryEventStats:一般是用来根据最近时间戳找到top进程UsageStatsManager.queryAndAggregateUsageStats:获取聚合后的应用前台使用时长UsageStatsManager.queryEvents:自己计算每个进程的运行时长和启动次数(包含Activity和Service ForeGround 事件)

苏法迪的专栏 1178

UsageStatsManager怎样使用问题详解和获取应用使用信息

转载自:http://blog.youkuaiyun.com/andoop/article/details/50593699 UsageStatsManager就是使用情况统计管理者,通过它可以获取应用的使用情况。 它是Android 5.0 才有的API。 使用它之前需要在清单文件中配置 “android.permission.PACKAGE_USAGE_STATS”的权限用户必须在

安卓鸟的专栏 4002

Android如何获取运行的app,Android6.0以后,如何获取当前运行的app

前言在Android5.0,即Lollipop(api level 21)之前,大家都幸福的使用如下代码来获得当前运行的app,即所谓的top Activity:ActivityManager activityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);ComponentName cn = ...

weixin_42629815的博客 1995

Android 应用使用数据统计服务——UsageStatsManager

先了解下相关知识。

fromVillageCoolBoy的博客 2636

Android应用使用时长统计:基于UsageStatsManager的完整实现指南

在Android应用开发中,系统权限管理与后台数据采集是构建高级功能的基础。Android系统通过UsageStatsManager服务,为开发者提供了官方、高效的应用使用情况统计能力,其原理是系统内核统一收集所有应用的活动事件并聚合为可查询的数据。这项技术的核心价值在于,它避免了开发者自行监听应用前后台切换所带来的不准确与耗电问题,同时确保了数据的权威性和隐私合规性。在数字健康、家长控制、应用行为分析等场景中,精确统计应用使用时长和启动次数是核心需求。本文聚焦于PACKAGE_USAGE_STATS权限的

weixin_33910385的博客 445

Android应用使用时长统计实战:从UsageStatsManager权限申请到数据查询全解析

在Android应用开发中,系统权限管理与后台数据获取是构建高级功能的核心基础。Android系统通过权限机制保护用户隐私与设备安全,其中特殊权限如使用情况访问权限(Usage Access)需用户手动授权,涉及AppOpsManager等底层框架。理解权限申请流程与后台服务限制,对于实现可靠的数据统计功能至关重要。UsageStatsManager作为系统提供的应用使用情况“记账员”,其数据查询与聚合机制能帮助开发者获取精确的应用前台时长与启动次数。这一技术广泛应用于数字健康、家长控制、应用行为分析等场景

weixin_30561425的博客 287

Android获取应用使用时长和次数-UsageStatsManager使用

最近在做暑研,要求是需要获取到Android手机中的应用使用情况,经过查找,发现Android提供了 UsageStatsManager类来帮助进行应用使用信息的统计(注明,Android5.0系统大部分手机不支持这个类,Android5.1系统之后完全支持[1], 显然现在大部分手机都是支持的),这篇文章主要记录一下这个类的使用方法。 授权 想要使用这个类来获取应用使用信息,首先需要对app进行授权,我们需要在AndroidManifest.xml文件中加入uses-permission <uses

weixin_45951701的博客 1万+

Android应用使用时长与次数监控:UsageStatsManager实战指南

在Android应用开发中,应用行为分析与用户时间管理是常见的需求,尤其在数字健康、设备管理等场景下。其核心原理是通过系统提供的API来精确统计应用的前台活跃时间与启动次数,而非简单的打开记录。这一技术价值在于能够为开发者提供规范、高效且低功耗的数据采集方案,替代传统的后台轮询等低效方法。在具体实现上,Android系统自5.0版本起引入了UsageStatsManager服务,它作为系统的“时间记录官”,基于应用使用事件(如MOVE_TO_FOREGROUND、MOVE_TO_BACKGROUND)来动态

weixin_34216107的博客 395

Android5.0通过UsageStatsManager获取应用使用情况

目前需求统计应用的当天使用情况,在 5.0 以上有权限android.permission.PACKAGE_USAGE_STATS,获取到该权限后可以通过UsageStatsManager.queryUsageStats(int intervalType, long beginTime, long endTime)方法查询到应用的使用情况。 首先需要在AndroidManifest.xml里声明权限 <uses-permission android:name="android.permis...

王温暖的博客 1886

Android应用使用统计与分析:UsageStatsManager实践指南

在Android系统中,了解和追踪应用的使用情况对于开发者和企业来说至关重要。这些数据可以帮助开发者优化应用性能,提升用户体验,并为企业提供有价值的信息,如用户行为分析和市场趋势预测。本章将概述Android应用使用情况追踪的重要性、基本原理以及其在不同场景下的应用。本章将引导读者从基础到进阶,逐步深入了解如何通过Android提供的工具和API实现对应用使用情况的追踪。我们将首先介绍,这是Android系统用于追踪应用使用数据的API,之后会探讨如何在实际应用中解析和分析这些数据。

weixin_29717341的博客 2087

探索Vortex开源GPGPU:RISC-V SIMT架构(4-1),Execute SFU(1)

本文详细分析了Vortex RISC-V内核6级流水线中Execute阶段的SFU(特殊功能单元)模块。重点介绍了SFU的数据流结构,包含dispatch_unit、pe_switch、csr_unit、wctl_unit和gather_unit五个子模块。文章深入解析了warp控制指令wspawn和tmc的实现机制:wspawn用于激活指定数量的warp并设置新PC值,tmc则用于控制线程掩码和warp状态。通过C代码和汇编指令的对照分析,阐明了这些指令在并行计算中的关键作用,包括线程激活、状态切换和执行

weixin_55313207的博客 1363

UsageStatsManager 获取应用使用情况

获取应用使用情况涉及的类是UsageStatsManager ,用于获取包含特定时间范围的应用包的使用情况统计信息;在Android api21(即Android5.0引入);系统API稳定性好,Android5.0及以后版本都支持,不存在版本兼容问题。 一.判断应用是否具有此权限的方式如下: public boolean isGrantedUsagePremission(Conte...

weixin_39352694的博客 3661

setoolkit克隆网站获取用户信息

一、环境 kali、DVWA 二、步骤 首先打开kali,输入setoolkit 依次选择选项1-选项2-选项3-选项2 输入钓鱼网站的网址(默认为本地网址) 输入要克隆的网址URL 这里我的网址如图,将网址复制 然后模拟攻击场景,攻击者向受害者发送了一条钓鱼链接,此链接与DVWA的登陆页面完全一样,受害者点击之后并进行登陆信息 点击login之后,用户信息就被setool...

BeatRex的博客 2998

android 应用使用情况统计,Android已安装应用使用时长统计-UsageStatsManager

先看效果图应用使用时长统计截图源码地址Step1 授权必须确保设备的Android版本>=Android5.1(v22),少部分Android5.0(v21)可以使用UsageStatsManager在AndroidManifest.xml文件中添加权限说明,这是一个system级别的权限,加上tools:ignore="ProtectedPermissions"可以屏蔽调AS的红线(强逼症...

weixin_42405705的博客 2389

什么是三极管推挽电路

当没有信号输入时,电源通过PNP三极管EB间的二极管,然后通过NPN三极管BE间而二极管到地,这时这两个三极管都是导通的,三极管很容易由于电流过大而损坏。当输入信号为VCC时,上面的三极管导通,下面的三极管截止,输出信号为VCC-0.7V,这个0.7V就是上面NPN三极管BE间的导通压降。比如上面的三极管导通,那么输出电压就是输入电压减去0.7V,所以下面的PNP三极管由于基极电压大于发射极电压,是不会导通的。这是一个三极管推挽电路,上面是一个NPN的三极管,下面是一个PNP的三极管。

谢谢关注“小鱼教你模数电”,各平台同号 3372

ubuntu 24.04安装ros1 noetic

上面是参考链接给的修改内容。除了上面要修改的地方,我在编译的生活还有一个地方报错,修改成如下形式。因为我已经对文件rosconsole_log4cxx.cpp作了上面的修改,所有是不是188行不太确认了,如果报“log4cxx::spi::LocationInfo”问题,按照下面修改就可以了。我在编译时还报了一个问题,就是我之前安装的是jazzy。所以在编译时会报ros变量名不对,这时对变量名做修改就可以了。具体怎么修改,百度。a、将源文件中所有CMakelist中编译标准改为c++ 17.

yangpan011的博客 3207

获取Android当前运行的activity之UsageStatsManager

前言:之前总结了如何获取当前界面正在运行的APP包名,也就是上一个博客。这里做一下补充。 UsageStatsManager是用来统计app使用情况的类,用于获取包含特定时间范围的应用包的使用情况统计信息;在Android api21(即Android5.0引入);系统API稳定性好,Android5.0及以后版本都支持,不存在版本兼容问题。 UsageStatsManager源码 下面看如何使用...

一个Android菜鸟的博客 1867

学术规范与论文写作(雨课堂)研究生 全部答案

1:如何造就优秀的学术论文 论文语法判断题 :全部是错的 2:如何撰写学术论文 3: SCI论文写作经验分享 4:论文写作与投稿技巧 5:学术伦理道德 答案仅供参考,研究生生活不易,大家如果有时间的话,还是可以学习学习的,毕竟老师讲的不错。加油,希望读研的每一个人都能顺利毕业! ...

Always-Learning 13万+

Android6.0以后,如何获取当前运行的app

前言在Android5.0,即Lollipop(api level 21)之前,大家都幸福的使用如下代码来获得当前运行的app。而Android6.0之后,则必须使用一些新的招数了,本文就详细介绍了这些招数。

LogicTeamLeader的专栏 8137

9.6华为OD机试真题 新系统 - 少儿爬山闯关积分游戏 (Java/Py/C/C++/Js/Go)

2026 华为OD机试真题9月6日华为OD上机新系统考试真题 100 分题型。

算法大师! 859

[RK3568 Android11] 开发之蓝牙(AP6275S)

前言 蓝牙是一种支持设备短距离通信(一般10m内)的无线电技术,能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。利用“蓝牙”技术,能够有效地简化移动通信终端设备之间的通信,也能够成功地简化设备与因特网Internet之间的通信,从而数据传输变得更加迅速高效,为无线通信拓宽道路。 接下来是在RK3568上调试AP6275S模块蓝牙部分: 一、设备树dts配置 根据硬件原理图,找到对应的控制引脚,配置好dts: ...

~未来可期~ 4075

Android获取前台运行应用包名UsageStatsManager和ActivityManager结合

获取前台运行应用的包名 在这之前我一直使用ActivityManager获取前台运行包名,因为APP有系统签名的问题在Android6.0并没有受到API限制,在Android6.0用上系统签名使用ActivityManager.getRunningAppProcesses()一切正常,不过这些天在Android7.0和9.0上发现这个API只能获取自己本身,一查看说这个方法在Android5.1就推荐不再使用了。啊?是这样吗?哪为啥getRunningAppProcesses()被划一条横线,也没有注解被

Felix的博客 4960

AI快速变现之路,AI视频创作

初期投入$3000(工具订阅+样片制作),重点攻克跨境电商和本地生活服务市场。关注2025年AIGC视频工具的API降价趋势(如Pika企业版折扣可达50%),建议与云服务商签订长期合作协议。

qq_29896351的博客 1982

Android UsageStatsManager的使用

背景:在做一个App Lock的demo,完全从应用层的层面去实现。 在5.0以下通过ActivityManager类的getRunningTasks()获取当前打开的所有应用程序 。 在5.0版本之后废弃了getRunningTasks()方法,意味着我们在5.0以后不能通过该方法获取正在运行的应用程序,google在5.0又提供类新的api,可以通过ActivityManager的g

jx_shi的博客 8519

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

android.app.usage,android – 使用UsageStatsManager获取前台应用程序

我正在尝试使用UsageStatsManager在带有Marshmallow的Nexus 5上获取前台应用程序.我记得它曾经工作,但由于某种原因我现在得到包/类名称的空字符串.这是我的实施public String[] getForegroundPackageNameClassNameByUsageStats() {String packageNameByUsageStats = null;Str...

weixin_33204286的博客 772

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android UsageStatsManager的简单使用

最近公司要弄一个积分墙的app,因为涉及一些业务逻辑,所以查资料,做了一些总结。 (不懂积分墙的小伙伴请点 http://baike.baidu.com/link?url=N4uRhzK4qHtAsuSqotNJgT9DCIJXZb5014ia5tDsiWO81-Nh7M-7Qmdg0S1DH7_LB7USJMcL7wT9sEaCJEuk_9d1vPkkfWwneYfOigBBPMEqf_eC8

shanfuming的博客 4579
下一篇: 从源码分析RxJava在Android里线程切换的实现
LX_LE
博客等级 码龄10年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值