最近做项目总发现好多软件需要设置一个权限,”有权查看使用情况的应用程序“

今天闲下来看看他是什么东西,总结下给大家分享一下:

之前也就是android系统5.0之前我们一贯的做法去栈顶应用的方法是用getRunningTask,但是5.0之后被google给屏蔽了,但是对于我们做应用锁,或者桌面悬浮窗的小伙伴们可如何是好,因为没有这些我们是无法判断当前的栈顶程序是谁,我们就不能对之进行程序加密,或者隐藏和显示桌面悬浮窗了。总会有方法的,查资料发现大家都在用”有权查看使用情况的应用程序“ 也就是用UsageStatsManager获取栈顶程序,但是他需要我们程序赋予App权限,也就是”有权查看使用情况的应用程序“

就是在安全-高级-有权查看使用情况的应用 在这个模块中勾选上指定APP就可以获取到栈顶的应用名。

程序中我们用Settings.ACTION_USAGE_ACCESS_SETTINGS 这个常量就是跳转到设置界面。

注意:这个设置被部分厂商给拿掉了,例如:小米和魅族

这个选项需要的权限

<uses-permissionandroid:name="android.permission.PACKAGE_USAGE_STATS"tools:ignore="ProtectedPermissions" />

判断当前设备中是否有"有权查看使用情况的应用程序"这个选项:

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;}

跳转到此设置界面的方法:

     Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);startActivity(intent);

android 什么是有权查看使用情况的应用程序相关推荐

  1. 查看android端口命令,netstat命令-查看端口被占用情况,并杀死进程

    netstat命令的功能是显示网络连接.路由表和网络接口信息 命令格式:netstat [选项] 查看命令帮助:netstat -help 查看所有的端口占用情况 netstat -ano 查看指定端 ...

  2. 【Android】【转】查看内存

    本来想着写点啥的,但发现已经有很多人写了类似的文章了.就直接转载了写得比较齐全的文章. 本人已试验过方法一.六.七.八. [文章来源]http://blog.csdn.net/hudashi/arti ...

  3. android 设备占用_如何查看正在占用Android设备的空间

    android 设备占用 When you picked up your shiny new Android device, you probably thought "yeah, this ...

  4. android studio中崩溃无法查看log?

    android studio中崩溃无法查看log? https://www.zhihu.com/question/32024327 android studio中崩溃无法查看log? 用AS,App崩 ...

  5. linux怎么查看证书库,curl --resolve 查看证书情况

    通过curl  解析证书 [root@harbor ~]# curl --resolve 'www.abc.com:127.0.0.1' https://www.abc.com/ -vvv * Cou ...

  6. Android混淆后的日志查看方法(mac)

    Android混淆后的日志查看方法(mac) 注:这是本人常用方法,如下述方法有错误或更好的办法,请大佬评论指出,防止误导他人.收集日志用的友盟,混淆后的日志在友盟错误列表-错误详情-详细日志, 1. ...

  7. Win11如何查看电池情况 Win11查看电池情况的方法

    不少小伙伴在更新Win11系统后,不知道如何查看自己电脑的电池情况,也不知道到哪里改自己的电池使用方法,那么遇到这种问题应该怎么办呢?下面就和小编一起来看看应该怎么操作吧. Win11查看电池情况的方 ...

  8. 服务器训练数据 关闭终端,一文明白使用nohup将服务器训练程序后台运行不关闭+随时通过查看训练情况输出与visdom可视化...

    使用nohup将训练程序后台不间断运行+随时查看训练情况输出与可视化 使用服务器进行远程训练 由于笔者经常需要使用服务器进行训练,且有些模型训练起来需要很长的时间,如Mask模型,故经常需要长期跑程序 ...

  9. CentOS查看硬件情况

    CentOS7 查看硬件情况 lsblk 查看分区和磁盘 df -h 查看空间使用情况 fdisk -l 分区工具查看分区信息 cfdisk /dev/sda 查看分区 blkid 查看硬盘label ...

最新文章

  1. 报名 | 风控中的A/B卡:申请模型和行为模型讲座
  2. OpenCV学习--saturate_cast防止数据溢出
  3. 95后热搜哪些事,夸克用AI引擎发布2021年度关键词
  4. 洛谷 P1993 小K的农场 解题报告
  5. MySQL视图索引与存储过程精析
  6. gdt描述_GDT形位公差详解.ppt
  7. SHN-PEG2000-Pyrene,Pyrene-PEG2000-NHS
  8. 介绍一下115sha1链接使用方法
  9. html页面设计扁平化,35个扁平化网站设计灵感
  10. 那些不回你微信的人都在看什么?
  11. educoder Git进阶之合并远程分支、rebase、储藏
  12. iOS视频 压缩过程 AVAssetExportSessionStatusFailed 文件创建失败
  13. 万字详解什么是生成对抗网络GAN
  14. qcustomplot 峰值_QT 本程序可读取Yokogawa 光谱仪多个数据文件(CSV格式)并寻峰 - 下载 - 搜珍网...
  15. 微信小程序直播服务器是用的腾讯的,使用微信小程序和腾讯云实现直播功能
  16. 音乐歌单Android,仿网易云音乐歌单界面 Header滑动效果
  17. Speedoffice(excel)如何制作斜线表头
  18. 免费安装office流程(官方自动批量激活)
  19. java如何对不齐,java中的测不准原理_java认证
  20. 在线升级R语言版本以及在RStudio容纳最新版本的R

热门文章

  1. 戴尔服务器r710主板电池位置,戴尔R710内部结构1
  2. 倾斜摄影相机焦距与实景三维模型效果的关系
  3. 数据分析报告2:Superstore销售情况分析
  4. 百度云不限速-proxyee-down
  5. cad工具箱详细讲解_筑龙网CAD工具箱使用说明
  6. 从qq服务器删除误收邮件,QQ邮箱撤回时显示撤回失败,对方已读 收件箱里的消息却是对方已阅读或已删除 这种情况下邮件有没有被删除...
  7. 2018ACM-ICPC 焦作站现场赛 F. Honeycomb(BFS求最短路,卡memset)
  8. “progtam received signal SIGABRT,Aborted.“错误
  9. ESP32 开发笔记(三)源码示例 8_DHT11_RMT 使用RMT实现读取DHT11温湿度传感器
  10. Windows7 UAC 实验