/**
* 获取进程号对应的进程名
*
* @param pid 进程号
* @return 进程名
*/
public static String getProcessName(int pid) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("/proc/" + pid + "/cmdline"));
String processName = reader.readLine();
if (!TextUtils.isEmpty(processName)) {
processName = processName.trim();
}
return processName;
} catch (Throwable throwable) {
throwable.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException exception) {
exception.printStackTrace();
}
}
return null;
}
Native的代码
char process_name[50] = {0};
char *pWecarnavi = "com.xx.xx";
getprocname(IPCThreadState::self()->getCallingPid(), process_name, sizeof(process_name));
static int getprocname(pid_t pid, char *buf, size_t len) {
char filename[20];
FILE *f;
sprintf(filename, "/proc/%d/cmdline", pid);
f = fopen(filename, "r");
if (!f) { *buf = '\0'; return 1; }
if (!fgets(buf, len, f)) { *buf = '\0'; return 2; }
fclose(f);
return 0;
}
本文介绍了一种在Android环境下使用Java和Native代码获取进程名称的方法。通过读取'/proc/{pid}

2675

被折叠的 条评论
为什么被折叠?



