Android5.0以上版本查看应用使用情况
来源:互联网 发布:lol怎么刷金币软件 编辑:程序博客网 时间:2024/06/01 19:50
前言
开启服务,监视正在运行的应用。这个在Android的高版本中(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
)显得比较复杂一些。在低版本中实现起来比较容易。这里介绍在5.0以上版本的实现。
Android5.0以上需要开启“有权查看使用情况的应用”
首先检测设备是否有“有权查看使用情况的应用”
private boolean isNoOption() { PackageManager packageManager = getApplicationContext() .getPackageManager(); Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS); List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); return list.size() > 0; }
如果有“有权查看使用情况的应用”判断是否开启
private boolean isNoSwitch() { long ts = System.currentTimeMillis(); UsageStatsManager usageStatsManager = (UsageStatsManager) getApplicationContext() .getSystemService("usagestats"); List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats( UsageStatsManager.INTERVAL_BEST, 0, ts); if (queryUsageStats == null || queryUsageStats.isEmpty()) { return false; } return true; }
如果没有开启,则跳转至开启界面
if (isNoOption()) { buttonGuide.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent( Settings.ACTION_USAGE_ACCESS_SETTINGS); startActivity(intent); } });
添加权限
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" tools:ignore="ProtectedPermissions" />
以上部分参考了Android 5.0以后版本打开“有权查看使用情况的应用”在此表示感谢
代码实现查看正在运行的应用包名
public static String getTopAppName(Context context) { ActivityManager mActivityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); String strName = ""; try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { strName = getLollipopFGAppPackageName(context); } else { strName = mActivityManager.getRunningTasks(1).get(0).topActivity.getClassName(); } } catch (Exception e) { e.printStackTrace(); } return strName;}private static String getLollipopFGAppPackageName(Context ctx) { try { UsageStatsManager usageStatsManager = (UsageStatsManager) ctx.getSystemService("usagestats"); long milliSecs = 60 * 1000; Date date = new Date(); List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, date.getTime() - milliSecs, date.getTime()); if (queryUsageStats.size() > 0) { Log.i("LPU", "queryUsageStats size: " + queryUsageStats.size()); } long recentTime = 0; String recentPkg = ""; for (int i = 0; i < queryUsageStats.size(); i++) { UsageStats stats = queryUsageStats.get(i); if (i == 0 && !"org.pervacio.pvadiag".equals(stats.getPackageName())) { Log.i("LPU", "PackageName: " + stats.getPackageName() + " " + stats.getLastTimeStamp()); } if (stats.getLastTimeStamp() > recentTime) { recentTime = stats.getLastTimeStamp(); recentPkg = stats.getPackageName(); } } return recentPkg; } catch (Exception e) { e.printStackTrace(); } return "";}
以上知识感谢how to getTopActivity name or get current running application package name in lollipop?
2 0
- Android5.0以上版本查看应用使用情况
- Android5.0查看应用使用情况的权限
- Android5.0以上版本对比
- Android5.0以上版本ActiveAndroid报ClassNotFoundException错误
- Android5.0以上版本ActiveAndroid报ClassNotFoundException错误
- Android5.0以上版本ActiveAndroid报ClassNotFoundException错误
- Android5.0以上获取正在运行的应用
- Android5.0以上使用MediaProjection截图和录屏
- Android5.0以上使用MediaProjection截图和录屏
- 查看系统版本和内存使用情况
- Android 5.0以后版本打开“有权查看使用情况的应用”
- Android 5.0以后版本打开“有权查看使用情况的应用”
- Android 5.0以后版本打开“有权查看使用情况的应用”
- Android 5.0以上通过UsageStatsManager类 获取应用使用情况
- Android6.0以上版本去除应用权限
- 解决Cocos3.2以上版本在Android5.0崩溃的问题
- 为Android5.0及以上版本中的TextView等控件设置波纹效果
- Android5.0及以上版本通知栏和状态栏不显示彩色图标而都是白色
- 【Linux】 进程通信--命名管道
- 离线安装gradle
- 集线器、交换机、路由器、网桥、网关之间的区别与联系
- jQuery的观察者模式详解
- 裸设备和Oracle问答20例
- Android5.0以上版本查看应用使用情况
- 决策树学习笔记(二)
- BZOJ 3037 创世纪
- zookeeper原理
- swift 将json字符串 转换成 字典
- WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform...
- python import cv2报错 segmentation fault:11
- 46种常见的浏览器兼容性问题大汇总
- 新手写openmp程序,结果不能运行,求教高手指点