package com.lody.virtual.helper.proto;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageParser;
import android.os.Parcel;
import android.os.Parcelable;
import com.lody.virtual.client.ipc.VPackageManager;
import com.lody.virtual.os.VEnvironment;
import com.lody.virtual.os.VUserInfo;
import com.lody.virtual.os.VUserManager;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
/**
* @author Lody
*/
public final class AppSetting implements Parcelable {
public String packageName;
public String apkPath;
public String libPath;
public boolean dependSystem;
public int appId;
public transient PackageParser parser;
public List<Integer> getInstalledUsers() {
List<Integer> installedUsers = new LinkedList<>();
List<VUserInfo> users = VUserManager.get().getUsers();
for (VUserInfo info : users) {
if (VEnvironment.getDataUserPackageDirectory(info.id, packageName).exists()) {
installedUsers.add(info.id);
}
}
return installedUsers;
}
public boolean isInstalled(int userId) {
return VEnvironment.getDataUserPackageDirectory(userId, packageName).exists();
}
public void installAsUser(int userId) {
VEnvironment.getDataUserPackageDirectory(userId, packageName).mkdirs();
}
public AppSetting() {
}
protected AppSetting(Parcel in) {
packageName = in.readString();
apkPath = in.readString();
libPath = in.readString();
dependSystem = in.readByte() != 0;
}
public File getOdexFile() {
return VEnvironment.getOdexFile(packageName);
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(packageName);
dest.writeString(apkPath);
dest.writeString(libPath);
dest.writeByte((byte) (dependSystem ? 1 : 0));
}
@Override
public int describeContents() {
return 0;
}
public static final Creator<AppSetting> CREATOR = new Creator<AppSetting>() {
@Override
public AppSetting createFromParcel(Parcel in) {
return new AppSetting(in);
}
@Override
public AppSetting[] newArray(int size) {
return new AppSetting[size];
}
};
public ApplicationInfo getApplicationInfo(int userId) {
return VPackageManager.get().getApplicationInfo(packageName, 0, userId);
}
}