package me.ele.amigo; import android.content.Context; import java.io.File; import java.util.HashMap; import java.util.Map; public final class PatchApks { private static final String PATCH_APK_FILE_NAME = "patch.apk"; private static PatchApks sInstance; public static PatchApks getInstance(Context context) { if (sInstance == null) { synchronized (PatchApks.class) { if (sInstance == null) { sInstance = new PatchApks(context); } } } return sInstance; } private Context context; /** * /data/data/{package_name}/files/amigo/{checksum}/patch.apk */ private Map<String, File> apkFiles = new HashMap<>(); private PatchApks(Context context) { this.context = context; } private void ensureDir(String checksum) { File patchDir = new File(AmigoDirs.getInstance(context).amigoDir(), checksum); if (!patchDir.exists()) { patchDir.mkdir(); } apkFiles.put(checksum, new File(patchDir, PATCH_APK_FILE_NAME)); } public File patchFile(String checksum) { ensureDir(checksum); return apkFiles.get(checksum); } public String patchPath(String checksum) { ensureDir(checksum); return apkFiles.get(checksum).getAbsolutePath(); } public boolean exists(String checksum) { ensureDir(checksum); return apkFiles.containsKey(checksum) && apkFiles.get(checksum).exists(); } }