android应用锁之获取前台进程包名方法

今天在做技术总结,顺便就把知识共享,个人崇尚分享。

通过以下方式来获取前台进程的包名:

1.android api 10-20

通过ActivityManager中getRunningTasks来获取。

2.android api 21- 22(部分没有升级google更新包)

由于系统在api 21以上禁用getRunningTasks接口。

通过ActivityManager中getRunningAppProcesses来获取

缺点:有可能误判(概率很低)

3.android api 22

由于系统在22以上禁用了getRunningAppProcesses接口。

通过/proc/pid/oom_adj的值以及bg_non_interactive来联合获取

缺点:有可能误判(概率一般)

4.android api 23及以上:

通过/proc/pid/oom_score的值以及bg_non_interactive来联合获取

缺点:有可能误判(概率较高)

5. android api 22及以上:

通过开启usageStats权限后由UsageStatsManager的queryEvents接口获取

时间: 2024-08-13 14:29:44

android应用锁之获取前台进程包名方法的相关文章

Android获取APK包名的几种方法

Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt--aapt是sdk自带的一个工具,在sdk\builds-tools\目录下 运行后的结果中以下两行分别是应用包名package和入口activity名称 package: name=’com.estrongs.android.pop’ launchable-activity: name=’com.e

Appium+Python自动化 -获取 app 包名和 activity

方法一: ①手机通过USB连接电脑 ②打开手机上被测app ③在电脑上 dos命令窗口,输入命令 adb shell dumpsys window w | findstr \/ | findstr name= 或 adb shell dumpsys window |findstr mCurrent 或 adb shell "dumpsys window w|grep \/|grep name=|sed 's/mSurface=Surface(name=//g'|sed 's/)//g'|sed

Linux获取apk包名,版本号

1.将来aapt和apktool拷贝到/usr/bin/下面 2.运行aapt报错:-bash: /usr/bin/aapt: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory解决:反查需要的文件在哪个包中yum whatprovides */ld-linux.so.2在获取的列表中选择安装glibc-2.12-1.132.el6_5.1.i686yum -y install glibc-2.12-1.132.e

使用adb 命令获取APP包名

最近开始使用adb了,感觉以前记得的命令又是从0开始了,所以由基础的开始总结起,好好让自己回顾一下. 方法一.获取APP包名 1.先连接上手机,使用命令    adb shell am monitor 2.打开想要获取包名的APP即可,以微信为例,如下就是我们想要的包名 方法二.获取APP包名 1.启动手机的app 2.使用adb shell dumpsys window | findstr mCurrentFocus  命令,可以查看当前启动中的应用信息 原文地址:https://www.cn

Android自动化学习笔记:获取APK包名的几种方法

---------------------------------------------------------------------------------------------------------------------------- 小记:自学过程中,经常需要用得到一个APK的包名,总结一下得到包名的几种方式. ********************** 2014-10-29:初版 2014-10-30:完善 ********************** -----------

android 自动化压力测试-monkey 2 获取程序包名

monkey 1 中我们写到: C:\Users\chenshan>adb shell [email protected]-T20:/ $ monkey -p cn.emoney.acg -v 500 说明:-p :指定被测试apk,主Activity(第一个启动的Activity)所在的包名(我问的开发) -v :指定测试的次数 也可以通过如下方法来获取机器中所有的包名: #adb shell #su #cd data/data #ls 如果提示:opendir failed, Permiss

借助Android sdk提过的aapt工具获取apk包名和首activity

def get_packer_activity(addr): # 提过apk路径,获取包名和首页activity cmd = 'aapt dump badging '+ addr+'>abc.log' flag = [] if 0 == os.system(cmd): try: with open('abc.log', 'r', encoding='UTF-8') as file: abc = file.readlines() for line in abc: if 'launchable-ac

Android 修改R包名方法

对于下面几种状况,我们可能需要修改Android项目的R包名:1.在项目不是在Maven管理之下,但又需要将同一个项目打包成多个名称不同的APK,而且还需可同时安装在同一部手机上(很诡异的要求),Android中apk的安装是根据apk当中AndroidMenifest.xml文件page属性来获取包名,安装时包名相同则会出现冲突,包名相同的后者会安装失败!2.我们对一个项目进行了复制,并进行了大范围的修改,然后打包,好吧,冲突了,因为和前一个项目的包名冲突了! android tool自带了修

android当前正在运行的应用包名

android后台service查看当前正在运行的应用的包名 ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); List<ActivityManager.RunningTaskInfo> taskInfo = activityManager.getRunningTasks(1); ComponentName componentInfo = taskInfo.g