131 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.cradle.iitc_mobile;
 | |
| 
 | |
| import java.io.IOException;
 | |
| 
 | |
| import com.cradle.iitc_mobile.R;
 | |
| 
 | |
| import android.net.Uri;
 | |
| import android.os.Bundle;
 | |
| import android.os.Handler;
 | |
| import android.app.Activity;
 | |
| import android.content.Intent;
 | |
| import android.content.pm.PackageInfo;
 | |
| import android.content.pm.PackageManager.NameNotFoundException;
 | |
| import android.util.Log;
 | |
| import android.view.Menu;
 | |
| import android.view.MenuItem;
 | |
| import android.widget.Toast;
 | |
| 
 | |
| public class IITC_Mobile extends Activity {
 | |
| 
 | |
| 	private IITC_WebView iitc_view;
 | |
| 	private boolean back_button_pressed = false;
 | |
| 
 | |
| 	@Override
 | |
| 	protected void onCreate(Bundle savedInstanceState) {
 | |
| 		super.onCreate(savedInstanceState);
 | |
| 		setContentView(R.layout.activity_main);
 | |
| 		iitc_view = (IITC_WebView) findViewById(R.id.iitc_webview);
 | |
| 
 | |
| 		// we do not want to reload our page every time we switch orientations...
 | |
| 		// so restore state if activity was already created
 | |
| 		if(savedInstanceState != null) {
 | |
| 			iitc_view.restoreState(savedInstanceState);
 | |
| 		}
 | |
| 		else {
 | |
| 			// load new iitc web view with ingress intel page
 | |
| 			Intent intent = getIntent();
 | |
| 			String action = intent.getAction();
 | |
| 			if (Intent.ACTION_VIEW.equals(action)) {
 | |
| 				Uri uri = intent.getData();
 | |
| 				String url = uri.toString();
 | |
| 				// TODO Why does "if(intent.getScheme() == "http")" not work?
 | |
| 				if (url.contains("http://"))
 | |
| 					url = url.replace("http://", "https://");
 | |
| 				Log.d("Intent received", "url: " + url);
 | |
| 				if (url.contains("ingress.com")) {
 | |
| 					Log.d("Intent received", "loading url...");
 | |
| 					iitc_view.loadUrl(url);
 | |
| 				}
 | |
| 			}
 | |
| 			else {
 | |
| 				Log.d("No Intent call", "loading https://www.ingress.com/intel");
 | |
| 				iitc_view.loadUrl("https://www.ingress.com/intel");
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	// save instance state to avoid reloading on orientation change
 | |
| 	@Override
 | |
| 	protected void onSaveInstanceState(Bundle outState) {
 | |
| 		iitc_view.saveState(outState);
 | |
| 	}
 | |
| 
 | |
| 	// we want a self defined behavior for the back button
 | |
| 	@Override
 | |
| 	public void onBackPressed() {
 | |
| 		if (this.back_button_pressed) {
 | |
| 			super.onBackPressed();
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		iitc_view.loadUrl("javascript: window.goBack();");
 | |
| 		this.back_button_pressed = true;
 | |
| 		Toast.makeText(this, "Press twice to exit", Toast.LENGTH_SHORT).show();
 | |
| 
 | |
| 		// reset back button after 0.5 seconds
 | |
| 		new Handler().postDelayed(new Runnable() {
 | |
| 			@Override
 | |
| 			public void run() {
 | |
| 				back_button_pressed=false;
 | |
| 			}
 | |
| 		}, 500);
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public boolean onCreateOptionsMenu(Menu menu) {
 | |
| 		// Inflate the menu; this adds items to the action bar if it is present.
 | |
| 		getMenuInflater().inflate(R.menu.main, menu);
 | |
| 		return true;
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public boolean onOptionsItemSelected(MenuItem item) {
 | |
| 		// Handle item selection
 | |
| 		switch (item.getItemId()) {
 | |
| 		case R.id.reload_button:
 | |
| 			iitc_view.reload();
 | |
| 			try {
 | |
| 				iitc_view.getWebViewClient().loadIITC_JS(this);
 | |
| 			} catch (IOException e1) {
 | |
| 				e1.printStackTrace();
 | |
| 			} catch (NullPointerException e2) {
 | |
| 				e2.printStackTrace();
 | |
| 			}
 | |
| 			return true;
 | |
| 		// print version number
 | |
| 		case R.id.version_num:
 | |
| 			PackageInfo pinfo;
 | |
| 			try {
 | |
| 				pinfo = getPackageManager().getPackageInfo(getPackageName(), 0);
 | |
| 				Toast.makeText(this, "Build version: " + pinfo.versionName, Toast.LENGTH_SHORT).show();
 | |
| 			} catch (NameNotFoundException e) {
 | |
| 				e.printStackTrace();
 | |
| 			}
 | |
| 			return true;
 | |
| 		// clear cache
 | |
| 		case R.id.cache_clear:
 | |
| 			iitc_view.clearHistory();
 | |
| 			iitc_view.clearFormData();
 | |
| 			iitc_view.clearCache(true);
 | |
| 			return true;
 | |
| 		// get the users current location and focus it on map
 | |
| 		case R.id.locate:
 | |
| 			iitc_view.loadUrl("javascript: window.map.locate({setView : true, maxZoom: 13});");
 | |
| 			return true;
 | |
| 		default:
 | |
| 			return super.onOptionsItemSelected(item);
 | |
| 		}
 | |
| 	}
 | |
| }
 |