diff --git a/app/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java b/app/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java
index 6fb3d4637..46fe4ee36 100644
--- a/app/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java
+++ b/app/src/main/java/net/kdt/pojavlaunch/PojavLoginActivity.java
@@ -8,22 +8,22 @@ import android.os.*;
import android.support.annotation.*;
import android.support.v4.app.*;
import android.support.v4.content.*;
-import android.util.*;
+import android.support.v7.app.*;
import android.view.*;
import android.widget.*;
+import android.widget.CompoundButton.*;
import com.kdt.filermod.*;
-import com.kdt.mcgui.app.*;
import com.kdt.mojangauth.*;
import java.io.*;
import java.util.*;
-import android.widget.CompoundButton.*;
-import android.text.method.*;
-import android.system.*;
-import android.net.*;
-import static android.view.ViewGroup.LayoutParams.*;
import net.kdt.pojavlaunch.update.*;
import net.kdt.pojavlaunch.value.customcontrols.*;
-import android.support.v7.app.AppCompatActivity;
+import org.apache.commons.compress.archivers.tar.*;
+import org.apache.commons.compress.compressors.xz.*;
+
+import android.app.AlertDialog;
+import com.kdt.filerapi.*;
+import android.system.*;
public class PojavLoginActivity extends AppCompatActivity
// MineActivity
@@ -34,6 +34,7 @@ public class PojavLoginActivity extends AppCompatActivity
private CheckBox sRemember, sOffline;
private LinearLayout loginLayout;
private ImageView imageLogo;
+ private TextView startupTextView;
private boolean isPromptingGrant = false;
// private boolean isPermGranted = false;
@@ -141,7 +142,7 @@ public class PojavLoginActivity extends AppCompatActivity
private ProgressBar progress;
private ProgressBar progressSpin;
- private EditText progressLog;
+ // private EditText progressLog;
private AlertDialog progDlg;
@Override
@@ -153,6 +154,7 @@ public class PojavLoginActivity extends AppCompatActivity
FontChanger.changeFonts(startScr);
progress = (ProgressBar) startScr.findViewById(R.id.startscreenProgress);
+ startupTextView = (TextView) startScr.findViewById(R.id.startscreen_text);
//startScr.addView(progress);
AlertDialog.Builder startDlg = new AlertDialog.Builder(PojavLoginActivity.this, R.style.AppTheme);
@@ -204,9 +206,9 @@ public class PojavLoginActivity extends AppCompatActivity
{
if (obj[0].equals("visible")) {
progress.setVisibility(View.VISIBLE);
- } else if (obj.length == 2 && obj[1] != null) {
+ } /* else if (obj.length == 2 && obj[1] != null) {
progressLog.append(obj[1]);
- }
+ } */
}
@Override
@@ -216,10 +218,9 @@ public class PojavLoginActivity extends AppCompatActivity
if (obj == 0) {
if (progDlg != null) progDlg.dismiss();
uiInit();
- } else if (progressLog != null) {
+ } /* else if (progressLog != null) {
progressLog.setText(getResources().getString(R.string.error_checklog, "\n\n" + progressLog.getText()));
- }
-
+ } */
}
/*
private void appendlnToLog(String txt) {
@@ -338,18 +339,117 @@ public class PojavLoginActivity extends AppCompatActivity
//FileAccess.copyAssetToFolderIfNonExist(this, "1.7.3.jar", Tools.versnDir + "/1.7.3");
//FileAccess.copyAssetToFolderIfNonExist(this, "1.7.10.jar", Tools.versnDir + "/1.7.10");
- // Extract libraries
- if (!isLibrariesExtracted()) {
- Tools.extractAssetFolder(this, "libraries", Tools.MAIN_PATH);
- setPref(PREF_IS_INSTALLED_LIBRARIES, true);
- }
-
UpdateDataChanger.changeDataAuto("2.4", "2.4.2");
+
+ if (!isJavaRuntimeInstalled()) {
+ File jreTarFile = selectJreTarFile();
+ uncompressTarXZ(jreTarFile, new File(Tools.homeJreDir));
+ setPref(PREF_IS_INSTALLED_JAVARUNTIME, true);
+ }
}
catch(Exception e){
Tools.showError(this, e);
}
}
+
+ private File selectJreTarFile() throws InterruptedException {
+ final StringBuilder selectedFile = new StringBuilder();
+
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(PojavLoginActivity.this);
+ builder.setTitle(R.string.alerttitle_install_jre);
+ builder.setCancelable(false);
+
+ final AlertDialog dialog = builder.create();
+ FileListView flv = new FileListView(PojavLoginActivity.this);
+ flv.setFileSelectedListener(new FileSelectedListener(){
+
+ @Override
+ public void onFileSelected(File file, String path, String name) {
+ if (name.endsWith(".tar.xz")) {
+ selectedFile.append(path);
+ }
+ }
+ });
+ dialog.setView(flv);
+ dialog.show();
+ }
+ });
+
+ while (selectedFile.length() == 0) {
+ Thread.sleep(500);
+ }
+
+ return new File(selectedFile.toString());
+ }
+
+ private void uncompressTarXZ(final File tarFile, final File dest) throws IOException, ErrnoException {
+
+ dest.mkdir();
+ TarArchiveInputStream tarIn = null;
+
+ tarIn = new TarArchiveInputStream(
+ new XZCompressorInputStream(
+ new BufferedInputStream(
+ new FileInputStream(tarFile)
+ )
+ )
+ );
+
+ TarArchiveEntry tarEntry = tarIn.getNextTarEntry();
+ // tarIn is a TarArchiveInputStream
+ while (tarEntry != null) {
+ /*
+ * Unpacking very small files in short time cause
+ * application to ANR or out of memory, so delay
+ * a little if size is below than 20kb (20480 bytes)
+ */
+ if (tarEntry.getSize() <= 20480) {
+ try {
+ // 40 small files per second
+ Thread.sleep(25);
+ } catch (InterruptedException e) {}
+ }
+ final String tarEntryName = tarEntry.getName();
+ runOnUiThread(new Runnable(){
+ @Override
+ public void run() {
+ startupTextView.setText(getString(R.string.global_unpacking, tarEntryName));
+ }
+ });
+ // publishProgress(null, "Unpacking " + tarEntry.getName());
+ File destPath = new File(dest, tarEntry.getName());
+ if (tarEntry.isSymbolicLink()) {
+ destPath.getParentFile().mkdirs();
+ android.system.Os.symlink(tarEntry.getName(), tarEntry.getLinkName());
+ // unpackShell.writeToProcess("ln -s " + tarEntry.getName() + " " + tarEntry.getLinkName());
+ } else if (tarEntry.isDirectory()) {
+ destPath.mkdirs();
+ destPath.setExecutable(true);
+ } else if (!destPath.exists() || destPath.length() != tarEntry.getSize()) {
+ destPath.getParentFile().mkdirs();
+ destPath.createNewFile();
+ // destPath.setExecutable(true);
+
+ byte[] btoRead = new byte[2048];
+ BufferedOutputStream bout =
+ new BufferedOutputStream(new FileOutputStream(destPath));
+ int len = 0;
+
+ while((len = tarIn.read(btoRead)) != -1) {
+ bout.write(btoRead,0,len);
+ }
+
+ bout.close();
+ btoRead = null;
+
+ }
+ tarEntry = tarIn.getNextTarEntry();
+ }
+ tarIn.close();
+ }
private boolean mkdirs(String path)
{
diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml
index 9818270f9..0fd4d133b 100644
--- a/app/src/main/res/layout/main.xml
+++ b/app/src/main/res/layout/main.xml
@@ -259,7 +259,7 @@
diff --git a/app/src/main/res/layout/start_screen.xml b/app/src/main/res/layout/start_screen.xml
index baffa4261..64e4f7238 100644
--- a/app/src/main/res/layout/start_screen.xml
+++ b/app/src/main/res/layout/start_screen.xml
@@ -4,8 +4,7 @@
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
- android:gravity="center"
- android:id="@+id/startscreenLinearLayout1">
+ android:gravity="center">
+ android:text="@string/app_motd"
+ android:id="@+id/startscreen_text"/>
BAHASA - ID
-
- Catatan log
-
Email atau username
(Saya pilih yang mana?)
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 43d79c39b..187d6fd0d 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -11,9 +11,6 @@
Polski - PL
-
- Wyjście dziennika
-
Email lub nazwa użytkownika
(Którego mam użyć?)
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index dfe038f21..c2ae6f4da 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -11,9 +11,6 @@
РУССКИЙ - RU
-
- Журнал
-
Email или псевдоним
(Что мне использовать?)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0e1bb3c86..4353f0cae 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -10,10 +10,7 @@
ENGLISH - US
-
-
- Log output
-
+
Email or username
(Which do I use?)
@@ -47,6 +44,7 @@
This account will be removed!
+ Install Java Runtime (.tar.xz)
Select a keymap json
Select a mod to install
@@ -119,13 +117,13 @@
Remove
Restart
Save
+ Unpacking %s
This field can\'t be empty
Update console
+
Options
Play
Welcome,
@@ -199,5 +198,5 @@
Switch user
Version:
No crash detected
- No log.
+ No log.