--- android/EKLLauncher/src/dk/thoerup/ekllauncher/EKLLauncherActivity.java 2011/10/20 20:30:48 1618 +++ android/EKLLauncher/src/dk/thoerup/ekllauncher/EKLLauncherActivity.java 2013/02/25 08:39:29 1925 @@ -1,14 +1,20 @@ package dk.thoerup.ekllauncher; import android.app.Activity; +import android.app.AlertDialog; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; +import android.location.LocationManager; import android.net.ConnectivityManager; +import android.net.NetworkInfo; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.os.PowerManager; import android.provider.Settings; import android.telephony.TelephonyManager; +import android.text.InputType; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -17,9 +23,11 @@ import android.webkit.JsPromptResult; import android.webkit.WebChromeClient; import android.webkit.WebSettings; +import android.webkit.WebStorage; import android.webkit.WebStorage.QuotaUpdater; import android.webkit.WebView; import android.webkit.WebViewClient; +import android.widget.EditText; import android.widget.Toast; public class EKLLauncherActivity extends Activity { @@ -27,13 +35,12 @@ class CustomChromeClient extends WebChromeClient { @Override - public boolean onCreateWindow(WebView view, boolean dialog, - boolean userGesture, Message resultMsg) { - msg("create window"); - return super.onCreateWindow(view, dialog, userGesture, resultMsg); + public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota, QuotaUpdater quotaUpdater) { + quotaUpdater.updateQuota(totalUsedQuota + 4096); } + public void onProgressChanged(WebView view, int progress) { // Activities and WebViews measure progress with different scales. // The progress meter will automatically disappear when we reach 100% @@ -65,33 +72,54 @@ }*/ @Override - public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { - if (message.trim().toLowerCase().equals("pda identifikation mangler")) { + public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) { + String msg = message.trim().toLowerCase(); + + if (msg.equals("ekl identifikation mangler")) { result.confirm(device); - + timeoutHandler.sendEmptyMessageDelayed(1, 500); //efter pdaID er sendt til app'en skal vi genindlæse siden for at tvinge den til at hente data return true; + } else if (msg.startsWith("indtast retur antal")) { + + AlertDialog.Builder alert = new AlertDialog.Builder(EKLLauncherActivity.this); + + //alert.setTitle("Title"); + alert.setMessage(message); + + // Set an EditText view to get user input + final EditText input = new EditText(EKLLauncherActivity.this); + input.setInputType(InputType.TYPE_CLASS_NUMBER); + alert.setView(input); + + alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + result.confirm(input.getText().toString()); + } + }); + alert.show(); + + return true; } else { return super.onJsPrompt(view, url, message, defaultValue, result); } } - } class DummyWebViewClient extends WebViewClient { } - static final String URL = "http://omdeling.info/mobil/ekl/login.php"; + static final String URL = "http://omdeling.info/mobil_gpstrack/ekl/login.php"; + LocationManager locMgr; ConnectivityManager connMgr; TelephonyManager telMgr; WebView web; String device = ""; + PowerManager.WakeLock wakeLock; - public void msg(String m) { - Toast.makeText(EKLLauncherActivity.this, m, Toast.LENGTH_SHORT).show(); - } + SimHandler simHandler = new SimHandler(); /** Called when the activity is first created. */ @Override @@ -112,38 +140,46 @@ } catch (Settings.SettingNotFoundException e) { Log.d("EKL", "Exception " + e.getMessage() ); } + + locMgr = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); + telMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); + connMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); + PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); + wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "EklLauncher"); + wakeLock.acquire(); - telMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); - connMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); - device = telMgr.getLine1Number(); if (device == null || device.equals("")) { - device = telMgr.getDeviceId(); + device = telMgr.getSimSerialNumber(); if(device == null) - device = ""; + device = ""; } + Toast.makeText(EKLLauncherActivity.this, "Device:"+device, Toast.LENGTH_SHORT).show(); + + setContentView(R.layout.main); web = (WebView) findViewById(R.id.web); WebSettings settings = web.getSettings(); - + settings.setJavaScriptEnabled(true); settings.setAppCacheEnabled(true); + settings.setAppCachePath( this.getCacheDir().toString() ); settings.setJavaScriptCanOpenWindowsAutomatically(false); settings.setGeolocationEnabled(true); - settings.setDomStorageEnabled(true); - settings.setDatabaseEnabled(true); + settings.setDomStorageEnabled(true); + settings.setDatabaseEnabled(true); settings.setDatabasePath( this.getCacheDir().toString() ); @@ -151,17 +187,36 @@ web.setWebChromeClient(new CustomChromeClient() ); web.setWebViewClient( new DummyWebViewClient() ); // skal have en webviewclient for at kunne styre ved forlad tur + + + simHandler.sendEmptyMessage(0); + - if ( (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) || connMgr.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI) { - web.loadUrl( URL ); - } else { - web.loadData("

afventer netværksforbindelse

", "text/html", "iso-8859-1"); - simHandler.sendEmptyMessageDelayed(0, 1500); - } + + if (!locMgr.isProviderEnabled(LocationManager.GPS_PROVIDER )) { + //Settings.Secure.putString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "network,gps"); + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setMessage("GPS er slået fra på telefonen!\nSæt et flueben ved GPS i næste vindue og tryk derefter på tilbage knappen (nederst på telefonen)") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + Intent myIntent = new Intent( Settings.ACTION_SECURITY_SETTINGS ); + startActivity(myIntent); + } + }) + .create() + .show(); + } } @Override + protected void onDestroy() { + super.onDestroy(); + wakeLock.release(); + } + + @Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem item; item = menu.add(0, 1, 0, "Genindlæs side"); @@ -179,6 +234,7 @@ web.reload(); break; case 2: + WebStorage.getInstance().deleteAllData(); web.clearCache(true); web.reload(); break; @@ -196,17 +252,28 @@ }; + + - Handler simHandler = new Handler() { - @Override - public void handleMessage(Message msg) { - super.handleMessage(msg); - if (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) { + class SimHandler extends Handler { + + public void testNetwork() { + NetworkInfo network = connMgr.getActiveNetworkInfo(); + + if ( (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) || ( network != null && network.getType() == ConnectivityManager.TYPE_WIFI) ) { web.loadUrl( URL ); } else { + web.loadData("

afventer netværksforbindelse

", "text/html", "iso-8859-1"); this.sendEmptyMessageDelayed(0, 1000); } } + + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + + testNetwork(); + } };