config.json and basics to allow auto login

This commit is contained in:
downthecrop 2021-12-19 00:00:20 -08:00
parent 5ee9de1895
commit 0b3478a5af
5 changed files with 100 additions and 12 deletions

View file

@ -139,7 +139,7 @@ public abstract class BaseLauncherActivity extends BaseActivity {
if (data == null) return;
//final Uri uri = data.getData();
Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.beta);
Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.miniclient);
String path = uri.getPath();
//File modFile = new File(new URI(path));

View file

@ -2,8 +2,10 @@ package net.kdt.pojavlaunch;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.*;
import android.os.Vibrator;
import android.util.Log;
import android.view.*;
import android.view.View.*;
import android.view.inputmethod.InputMethodManager;
@ -91,6 +93,8 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou
findViewById(R.id.keyboard).setOnTouchListener(this);
findViewById(R.id.camera).setOnTouchListener(this);
findViewById(R.id.mb2).setOnTouchListener(this);
this.touchPad = findViewById(R.id.main_touchpad);
touchPad.setVisibility(View.VISIBLE);
@ -187,7 +191,8 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou
placeMouseAt(CallbackBridge.physicalWidth / 2, CallbackBridge.physicalHeight / 2);
final File modFile = (File) getIntent().getExtras().getSerializable("modFile");
final File miniclient = (File) getIntent().getExtras().getSerializable("miniclient");
final File config = new File(getFilesDir(), "config.json");
final String javaArgs = getIntent().getExtras().getString("javaArgs");
mTextureView = findViewById(R.id.installmod_surfaceview);
@ -213,7 +218,7 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou
});
new Thread(() -> {
try {
launchJavaRuntime(modFile, javaArgs);
launchJavaRuntime(miniclient, javaArgs,config);
} catch (Throwable e) {
Tools.showError(JavaGUILauncherActivity.this, e);
}
@ -392,7 +397,7 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou
touchPad.setVisibility(isVirtualMouseEnabled ? View.GONE : View.VISIBLE);
}
public int launchJavaRuntime(File modFile, String javaArgs) {
public int launchJavaRuntime(File miniclient, String javaArgs,File config) {
JREUtils.redirectAndPrintJRELog(this);
try {
JREUtils.jreReleaseList = JREUtils.readJREReleaseProperties();
@ -406,13 +411,18 @@ public class JavaGUILauncherActivity extends BaseActivity implements View.OnTou
javaArgList.addAll(Arrays.asList(javaArgs.split(" ")));
} else {
javaArgList.add("-jar");
javaArgList.add(modFile.getAbsolutePath());
javaArgList.add(miniclient.getAbsolutePath());
javaArgList.add(config.getAbsolutePath()); // Pass client config as arg0
javaArgList.add("username=miniclientparam:");
javaArgList.add("password=miniclientparam:");
}
Logger.getInstance().appendToLog("Info: Java arguments: " + Arrays.toString(javaArgList.toArray(new String[0])));
Log.i("Info: Java arguments: ",Arrays.toString(javaArgList.toArray(new String[0])));
// Run java on sandbox, non-overrideable.
Collections.reverse(javaArgList);
javaArgList.add("-Xbootclasspath/a:" + Tools.DIR_DATA + "/pro-grade.jar");
javaArgList.add("-Djava.security.manager=net.sourceforge.prograde.sm.ProGradeJSM");
javaArgList.add("-Djava.security.policy=" + Tools.DIR_DATA + "/java_sandbox.policy");

View file

@ -6,6 +6,7 @@ import static net.kdt.pojavlaunch.Tools.getFileName;
import android.Manifest;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
@ -19,14 +20,12 @@ import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
@ -42,7 +41,6 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
public class PojavLoginActivity extends BaseActivity
// MineActivity
@ -155,20 +153,20 @@ public class PojavLoginActivity extends BaseActivity
barrier.setCancelable(false);
barrier.show();
Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.beta);
Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.miniclient);
barrier.setMessage(PojavLoginActivity.this.getString(R.string.multirt_progress_caching));
Thread t = new Thread(()->{
try {
final String name = getFileName(this, uri);
final File modInstallerFile = new File(getCacheDir(), name);
FileOutputStream fos = new FileOutputStream(modInstallerFile);
final File miniclient = new File(getCacheDir(), name);
FileOutputStream fos = new FileOutputStream(miniclient);
IOUtils.copy(getContentResolver().openInputStream(uri), fos);
fos.close();
PojavLoginActivity.this.runOnUiThread(() -> {
barrier.dismiss();
Intent intent = new Intent(PojavLoginActivity.this, JavaGUILauncherActivity.class);
intent.putExtra("modFile", modInstallerFile);
intent.putExtra("miniclient", miniclient);
startActivity(intent);
});
}catch(IOException e) {
@ -219,6 +217,23 @@ public class PojavLoginActivity extends BaseActivity
}
}
private void initMain() throws Throwable {
// Copy config.json to writable storage
// https://stackoverflow.com/questions/38590996/copy-xml-from-raw-folder-to-internal-storage-and-use-it-in-android
File file = new File(getFilesDir(), "config.json");
try {
Context context = getApplicationContext();
InputStream inputStream = context.getResources().openRawResource(R.raw.config);
FileOutputStream fileOutputStream = new FileOutputStream(file);
byte buf[]=new byte[1024];
int len;
while((len=inputStream.read(buf))>0) {
fileOutputStream.write(buf,0,len);
}
fileOutputStream.close();
inputStream.close();
System.out.println("Write to Local");
} catch (IOException e1) {}
mkdirs(Tools.DIR_ACCOUNT_NEW);
mkdirs(Tools.DIR_GAME_HOME);
mkdirs(Tools.DIR_GAME_HOME + "/lwjgl3");

View file

@ -0,0 +1,63 @@
{
"ip_management": "play.2009scape.org",
"world": 1,
"debug": {
"hd_login_region_debug_verbose": false,
"npc_debug": false,
"hd_login_region_debug": false,
"world_map_debug": false,
"item_debug": false,
"object_debug": false,
"cache_debug": false
},
"customization": {
"slayer": {
"color": "#635a38",
"opacity": "180",
"enabled": true
},
"login_theme": "scape main",
"rendering_options": {
"skybox": {
"skybox_color": "Coming in a future update..."
},
"technical": {
"render_distance_increase": true
}
},
"december_snow": false,
"right_click_menu": {
"border": {
"color": "#FFFFFF",
"opacity": "0"
},
"background": {
"color": "#5D5447",
"opacity": "255"
},
"styles": {
"presets": "custom",
"rs3border": false,
"Presets provide default customizations.": "rs3, classic, or custom. custom allows you to define your own values above. Classic is standard 2009."
},
"title_bar": {
"color": "#000000",
"font_color": "#FFFFFF",
"opacity": "255"
}
},
"xpdrops": {
"drop_mode": 0,
"track_mode": 0,
"enabled": true
},
"launcher": {
"closeOnClientLaunch": true,
"notifyUpdates": true
}
},
"server_port": 43594,
"ip_address": "play.2009scape.org",
"wl_port": 5555,
"js5_port": 43593
}