package com.lody.virtual.client.hook.patchs.am;
import android.app.ActivityManager;
import com.lody.virtual.client.hook.base.Hook;
import com.lody.virtual.client.ipc.VActivityManager;
import com.lody.virtual.os.VUserHandle;
import java.lang.reflect.Method;
import java.util.List;
/**
* @author Lody
*
*/
@SuppressWarnings("unchecked")
/* package */ class GetRunningAppProcesses extends Hook {
@Override
public String getName() {
return "getRunningAppProcesses";
}
@Override
public synchronized Object call(Object who, Method method, Object... args) throws Throwable {
List<ActivityManager.RunningAppProcessInfo> infoList = (List<ActivityManager.RunningAppProcessInfo>) method
.invoke(who, args);
if (infoList != null) {
for (ActivityManager.RunningAppProcessInfo info : infoList) {
if (VActivityManager.get().isAppPid(info.pid)) {
List<String> pkgList = VActivityManager.get().getProcessPkgList(info.pid);
String processName = VActivityManager.get().getAppProcessName(info.pid);
if (processName != null) {
info.processName = processName;
}
info.pkgList = pkgList.toArray(new String[pkgList.size()]);
info.uid = VUserHandle.getAppId(VActivityManager.get().getUidByPid(info.pid));
}
}
}
return infoList;
}
}