diff --git a/app/src/main/java/net/kdt/pojavlaunch/Tools.java b/app/src/main/java/net/kdt/pojavlaunch/Tools.java index 24ebada7a..32b66422b 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -11,6 +11,8 @@ import com.google.gson.*; import com.oracle.dalvik.*; import java.io.*; import java.lang.reflect.*; +import java.net.HttpURLConnection; +import java.net.URL; import java.nio.charset.*; import java.util.*; import java.util.zip.*; @@ -669,7 +671,25 @@ public final class Tools File file = new File(nameOutput); DownloadUtils.downloadFile(urlInput, file); } - + public abstract static class DownloaderFeedback { + public abstract void updateProgress(int curr, int max); + } + public static void downloadFileMonitored(String urlInput,String nameOutput, DownloaderFeedback monitor) throws IOException { + if(!new File(nameOutput).exists()){ + new File(nameOutput).getParentFile().mkdirs(); + } + HttpURLConnection conn = (HttpURLConnection) new URL(urlInput).openConnection(); + InputStream readStr = conn.getInputStream(); + FileOutputStream fos = new FileOutputStream(new File(nameOutput)); + int cur = 0; int oval=0; int len = conn.getContentLength(); byte[] buf = new byte[65535]; + while((cur = readStr.read(buf)) != -1) { + oval += cur; + fos.write(buf,0,cur); + monitor.updateProgress(oval,len); + } + fos.close(); + conn.disconnect(); + } public static class ZipTool { private ZipTool(){} diff --git a/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java b/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java index d18ce5889..10c60150a 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java +++ b/app/src/main/java/net/kdt/pojavlaunch/tasks/MinecraftDownloaderTask.java @@ -18,7 +18,7 @@ public class MinecraftDownloaderTask extends AsyncTaskFindClass(runtimeJNIEnvPtr_JRE, "org/lwjgl/glfw/GLFW"); assert(glfwClazz != NULL); jmethodID glfwMethod = (*runtimeJNIEnvPtr_JRE)->GetStaticMethodID(runtimeJNIEnvPtr_JRE, glfwMethod, "glfwSetWindowShouldClose", "(JZ)V"); @@ -149,6 +150,8 @@ void closeGLFWWindow() { glfwClazz, glfwMethod, (jlong) showingWindow, JNI_TRUE ); + */ + exit(-1); } JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeAttachThreadToOther(JNIEnv* env, jclass clazz, jboolean isAndroid, jboolean isUseStackQueueBool) {