安卓6.0以后用进程ID获取进程名字的方法

本文介绍了一种在Android环境下使用Java和Native代码获取进程名称的方法。通过读取'/proc/{pid}
/**
 * 获取进程号对应的进程名
 *
 * @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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值