package julianwi.javainstaller;
import java.io.File;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
public class MainActivity extends Activity implements OnSharedPreferenceChangeListener {
public static CheckPoint[] checks = new CheckPoint[]{
new CheckPoint("Android Terminal Emulator","A VT-100 terminal emulator for the Android OS" ,0),
new CheckPoint("busybox","BusyBox combines tiny versions of many common UNIX utilities into a single small executable" ,1),
new CheckPoint("gnu libc","The GNU C Library is used as the C library in the GNU systems and most systems with the Linux kernel" ,2),
new CheckPoint("zlib", "A Massively Spiffy Yet Delicately Unobtrusive Compression Library", 3),
new CheckPoint("libffi", "A portable foreign-function interface library", 4),
new CheckPoint("jamvm","JamVM is a new Java Virtual Machine conforming to the JVM specification edition 2 (blue book)" ,5),
new CheckPoint("gnu classpath","free implementation of the standard class library for the Java programming language" ,6),
new CheckPoint("freetype", "FreeType is a freely available software library to render fonts", 7),
new CheckPoint("awtonandroid graphic libraries","java awt graphic libraries for android" ,8),
new CheckPoint("cairo", "Cairo is a 2D graphics library", 9)
};
//private String[] checklist = new String[]{"install busybox", "install Terminal Emulator", "install gnu libc", "install precompiled versions of jamvm and gnu classpath"};
//private Boolean[] checklist2 = new Boolean[]{false, false, false, false};
//private String[] checklist3 = new String[]{"/data/data/jackpal.androidterm/bin/busybox", "/data/app/jackpal.androidterm-1.apk", "", ""};
public ListView lv;
public ListView lv2;
public ChecklistAdapter listenAdapter;
public static SharedPreferences sharedP;
public static Context context;
public static Context termcontext;
//public OnClickListener onclick = new Install(this ,checklist);
public static MainActivity ma;
public int state = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
try {
termcontext = createPackageContext("jackpal.androidterm", CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
sharedP = getSharedPreferences("settings", 1);
sharedP.registerOnSharedPreferenceChangeListener(this);
//Checkforfile cff = new Checkforfile();
//cff.scan(checks);
lv = new ListView(this);
//listenAdapter = new ChecklistAdapter(this, checks);
//lv.setAdapter(listenAdapter);
lv.setAdapter(new MainList(this));
setContentView(lv);
ma = this;
}
@Override
protected void onResume() {
super.onResume();
update();
if(checkCallingOrSelfPermission("jackpal.androidterm.permission.RUN_SCRIPT")!=PackageManager.PERMISSION_GRANTED){
try {
getPackageManager().getPackageInfo("jackpal.androidterm", PackageManager.GET_ACTIVITIES);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(getPackageCodePath())), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
} catch (NameNotFoundException e) {
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//menu.add("settings");
menu.add(0, 0, 0, "settings");
menu.add(0, 1, 0, "check for updates");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
Intent intent = new Intent(MainActivity.context, SettingsActivity.class);
MainActivity.context.startActivity(intent);
return true;
case 1:
Thread update = new Update(listenAdapter, this);
update.start();
}
return false;
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
Checkforfile cff = new Checkforfile();
cff.scan(checks);
if(listenAdapter!=null)listenAdapter.notifyDataSetChanged();
}
public void choosefile(String type){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(type);
startActivityForResult(intent,0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
System.out.println("result"+requestCode);
switch(requestCode){
case 0:
if(resultCode==RESULT_OK){
String FilePath = data.getData().getPath();
if(getSharedPreferences("julianwi.javainstaller_preferences", 1).getString("runmode2", "Run Activity").equals("Run Activity")){
Intent intent = new Intent(MainActivity.context, RunActivity.class);
intent.setDataAndType(Uri.parse(FilePath), "application/java-archive");
MainActivity.context.startActivity(intent);
}
else{
Intent i = new Intent("jackpal.androidterm.RUN_SCRIPT");
i.addCategory(Intent.CATEGORY_DEFAULT);
if(MainActivity.context.getSharedPreferences("julianwi.javainstaller_preferences", 1).getString("rootmode2", "off").equals("on")){
i.putExtra("jackpal.androidterm.iInitialCommand", "su\n/data/data/julianwi.javainstaller/java -jar "+FilePath);
}
else{
i.putExtra("jackpal.androidterm.iInitialCommand", "/data/data/julianwi.javainstaller/java -jar "+FilePath);
}
startActivity(i);
}
}
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
if(state == 1){
setContentView(lv);
}else if(state == 2){
setContentView(lv2);
}else{
return super.onKeyDown(keyCode, event);
}
state = state-1;
return true;
}
return super.onKeyDown(keyCode, event);
}
public void update() {
Checkforfile cff = new Checkforfile();
cff.scan(checks);
if(listenAdapter != null)listenAdapter.notifyDataSetChanged();
lv.setAdapter(new MainList(this));
if(state == 2)listenAdapter.update();
if(state == 0)setContentView(lv);
}
}