android5.1+获取当前运行的app2
来源:互联网 发布:牛津英语词典软件 编辑:程序博客网 时间:2024/05/22 19:30
之前的5.1以上获取当前运行进程的针对有些山寨机还是无法获取,我又找到了另一种解决方法,不过这种解决方法只是针对masscom型号的手机,其他手机没有测试
File[] files = new File("/proc").listFiles();
int lowestOomScore = Integer.MAX_VALUE;
String foregroundProcess = null;
for (File file : files) {
if (!file.isDirectory()) {
continue;
}
int pid;
try {
pid = Integer.parseInt(file.getName());
} catch (NumberFormatException e) {
continue;
}
try {
String cgroup = read(String.format("/proc/%d/cgroup", pid));
String[] lines = cgroup.split("\n");
String cpuSubsystem;
String cpuaccctSubsystem;
if (lines.length == 2) {// 有的手机里cgroup包含2行或者3行,我们取cpu和cpuacct两行数据
cpuSubsystem = lines[0];
cpuaccctSubsystem = lines[1];
} else if (lines.length == 3) {
cpuSubsystem = lines[0];
cpuaccctSubsystem = lines[2];
} else {
continue;
}
if (!cpuaccctSubsystem.endsWith(Integer.toString(pid))) {
// not an application process
continue;
}
if (cpuSubsystem.endsWith("bg_non_interactive")) {
// background policy
continue;
}
String cmdline = read(String.format("/proc/%d/cmdline", pid));
if (cmdline.contains("com.android.systemui")) {
continue;
}
int uid = Integer.parseInt(cpuaccctSubsystem.split(":")[2].split("/")[1].replace("uid_", ""));
if (uid >= 1000 && uid <= 1038) {
// system process
continue;
}
foregroundProcess = cmdline.trim();
这里面就直接获取了包名,没有对
int
appId = uid - AID_APP;
int
userId =
0
;
// loop until we get the correct user id.
// 100000 is the offset for each user.
while
(appId > AID_USER) {
appId -= AID_USER;
userId++;
}
if
(appId <
0
) {
continue
;
}
// u{user_id}_a{app_id} is used on API 17+ for multiple user account support.
// String uidName = String.format("u%d_a%d", userId, appId);
File oomScoreAdj =
new
File(String.format(
"/proc/%d/oom_score_adj"
, pid));
if
(oomScoreAdj.canRead()) {
int
oomAdj = Integer.parseInt(read(oomScoreAdj.getAbsolutePath()));
if
(oomAdj !=
0
) {
continue
;
}
}
int
oomscore = Integer.parseInt(read(String.format(
"/proc/%d/oom_score"
, pid)));
if
(oomscore < lowestOomScore) {
lowestOomScore = oomscore;
foregroundProcess = cmdline;
}
}
catch
(IOException e) {
e.printStackTrace();
}
}
- android5.1+获取当前运行的app2
- android5.1+获取当前运行的app
- android5.1+获取当前运行的app
- android5.1+获取当前运行的app(Android5.1-也支持)
- android5.1+获取当前运行的app(Android5.1-也支持)
- android5.1.1通过getRunningServices获取当前运行的pid,进程名等
- android5.0之后如何获取当前运行的应用包名
- android5.0之后如何获取当前运行的应用包名和应用名称
- android5.0之后如何获取当前运行的应用包名
- 获取当前运行的activity
- Android5.0之后获取后台正在运行的程序
- Android5.0以上获取正在运行的应用
- android5.1.1 获取当前移动信号强度
- 获取当前程序运行路径的函数
- 获取当前运行核心的配置文件
- 获取当前运行时的目录
- C#获取当前运行文件的文件名???
- android 获取当前正在运行的activity
- python学习的一些小技巧小结
- C# 全局变量与局部变量
- mysql Source导入问题
- iOS 不同颜色之分段式圆环,段数不固定
- 通过AndroidTestCase来进行android 单元测试 part II
- android5.1+获取当前运行的app2
- 数据探索之缺失值处理及代码实现
- 升级win10后virtualBox无法使用
- 如何调用自己写的python函数?
- 泛读:CVPR2014:Discriminative Deep Metric Learning for Face Verification in theWild
- Xcode7--免证书真机调试
- vim 空格问题
- AlertDialog,ProgressDialog
- 【english】 see you again