package com.lody.virtual.client.hook.patchs.pm;
import android.content.pm.PackageInfo;
import com.lody.virtual.client.core.VirtualCore;
import com.lody.virtual.client.hook.base.Hook;
import com.lody.virtual.client.ipc.VPackageManager;
import com.lody.virtual.helper.compat.ParceledListSliceCompat;
import com.lody.virtual.os.VUserHandle;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
/**
* @author Lody
*
* @see android.content.pm.IPackageManager#getInstalledPackages(int, int)
*
*/
@SuppressWarnings({"unchecked", "WrongConstant"})
/* package */ class GetInstalledPackages extends Hook {
@Override
public String getName() {
return "getInstalledPackages";
}
@Override
public Object call(Object who, Method method, Object... args) throws Throwable {
int flags = (int) args[0];
int userId = VUserHandle.myUserId();
List<PackageInfo> packageInfos;
if (isAppProcess()) {
packageInfos = new ArrayList<PackageInfo>(VirtualCore.get().getAppCount());
} else {
packageInfos = VirtualCore.get().getUnHookPackageManager().getInstalledPackages(flags);
}
packageInfos.addAll(VPackageManager.get().getInstalledPackages(flags, userId));
if (ParceledListSliceCompat.isReturnParceledListSlice(method)) {
return ParceledListSliceCompat.create(packageInfos);
} else {
return packageInfos;
}
}
}