/[projects]/android/EKLLauncher/src/dk/thoerup/ekllauncher/EKLLauncherActivity.java
ViewVC logotype

Annotation of /android/EKLLauncher/src/dk/thoerup/ekllauncher/EKLLauncherActivity.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1931 - (hide annotations) (download)
Tue Feb 26 10:22:43 2013 UTC (11 years, 3 months ago) by torben
File size: 10970 byte(s)
Handle exit's properly
1 torben 1616 package dk.thoerup.ekllauncher;
2    
3     import android.app.Activity;
4 torben 1624 import android.app.AlertDialog;
5 torben 1616 import android.content.Context;
6 torben 1624 import android.content.DialogInterface;
7 torben 1616 import android.content.Intent;
8 torben 1623 import android.location.LocationManager;
9 torben 1617 import android.net.ConnectivityManager;
10 torben 1619 import android.net.NetworkInfo;
11 torben 1616 import android.os.Bundle;
12     import android.os.Handler;
13     import android.os.Message;
14 torben 1924 import android.os.PowerManager;
15 torben 1616 import android.provider.Settings;
16     import android.telephony.TelephonyManager;
17 torben 1625 import android.text.InputType;
18 torben 1616 import android.util.Log;
19     import android.view.Menu;
20     import android.view.MenuItem;
21     import android.view.Window;
22 torben 1931 import android.view.WindowManager;
23 torben 1616 import android.webkit.GeolocationPermissions.Callback;
24     import android.webkit.JsPromptResult;
25     import android.webkit.WebChromeClient;
26     import android.webkit.WebSettings;
27 torben 1621 import android.webkit.WebStorage;
28 torben 1616 import android.webkit.WebStorage.QuotaUpdater;
29     import android.webkit.WebView;
30 torben 1618 import android.webkit.WebViewClient;
31 torben 1625 import android.widget.EditText;
32 torben 1925 import android.widget.Toast;
33 torben 1616
34     public class EKLLauncherActivity extends Activity {
35    
36     class CustomChromeClient extends WebChromeClient {
37    
38     @Override
39 torben 1620 public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota, QuotaUpdater quotaUpdater) {
40     quotaUpdater.updateQuota(totalUsedQuota + 4096);
41     }
42    
43    
44 torben 1616
45     public void onProgressChanged(WebView view, int progress) {
46     // Activities and WebViews measure progress with different scales.
47     // The progress meter will automatically disappear when we reach 100%
48     EKLLauncherActivity.this.setProgress(progress * 100);
49     }
50    
51    
52     @Override
53     public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, QuotaUpdater quotaUpdater) {
54     quotaUpdater.updateQuota(estimatedSize); // altid giv tilladelse til større db quota
55     }
56    
57    
58     @Override
59     public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {
60     callback.invoke(origin, true, true); //altid give tilladelse til geo location
61     }
62     /*
63     @Override
64     public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
65    
66     return super.onJsAlert(view, url, message, result);
67     }
68    
69     @Override
70     public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
71     Toast.makeText(EKLLauncherActivity.this, "Oh no! " + message, Toast.LENGTH_SHORT).show();
72     return super.onJsConfirm(view, url, message, result);
73     }*/
74    
75     @Override
76 torben 1625 public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) {
77     String msg = message.trim().toLowerCase();
78    
79 torben 1925 if (msg.equals("ekl identifikation mangler")) {
80 torben 1927 if (device != null && device.equals("")==false) {
81     result.confirm(device);
82 torben 1625
83 torben 1927 timeoutHandler.sendEmptyMessageDelayed(1, 500); //efter pdaID er sendt til app'en skal vi genindlæse siden for at tvinge den til at hente data
84     return true;
85     } else {
86     //Hvis vi ikke kunne aflæse device, spørg user via en custom Input Dialog
87     //Dialogen kan kun tage imod tal &
88     //når at vi får en confirm på den tvinger vi ud i en reload af siden
89    
90     AlertDialog.Builder alert = new AlertDialog.Builder(EKLLauncherActivity.this);
91 torben 1625
92 torben 1927 //alert.setTitle("Title");
93     alert.setMessage(message);
94 torben 1625
95 torben 1927 // Set an EditText view to get user input
96     final EditText input = new EditText(EKLLauncherActivity.this);
97     input.setInputType(InputType.TYPE_CLASS_NUMBER);
98     alert.setView(input);
99 torben 1625
100 torben 1927 alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
101     public void onClick(DialogInterface dialog, int whichButton) {
102     result.confirm(input.getText().toString());
103     timeoutHandler.sendEmptyMessageDelayed(1, 500);
104     }
105     });
106     alert.show();
107 torben 1625
108 torben 1927 return true;
109    
110     }
111 torben 1616 } else {
112     return super.onJsPrompt(view, url, message, defaultValue, result);
113     }
114     }
115     }
116 torben 1618
117     class DummyWebViewClient extends WebViewClient {
118     }
119 torben 1616
120 torben 1926 static final String LOGTAG = "EklLauncher";
121 torben 1927 static final String URL = "http://omdeling.info/mobil_gpstrack/ekl/";
122 torben 1616
123 torben 1623 LocationManager locMgr;
124 torben 1617 ConnectivityManager connMgr;
125 torben 1616 TelephonyManager telMgr;
126     WebView web;
127     String device = "";
128    
129 torben 1924 PowerManager.WakeLock wakeLock;
130 torben 1616
131 torben 1925 SimHandler simHandler = new SimHandler();
132    
133 torben 1931 @Override
134     public void onAttachedToWindow() {
135     this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
136     super.onAttachedToWindow();
137     }
138    
139 torben 1616 /** Called when the activity is first created. */
140 torben 1926 @Override
141 torben 1616 public void onCreate(Bundle savedInstanceState) {
142     super.onCreate(savedInstanceState);
143    
144 torben 1931 Log.e(LOGTAG, "Creating");
145 torben 1926
146 torben 1616 getWindow().requestFeature(Window.FEATURE_PROGRESS);
147    
148    
149     try {
150     int airplane = Settings.System.getInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON);
151 torben 1926
152 torben 1616 if (airplane > 0) {
153     Settings.System.putInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);
154     Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
155     intent.putExtra("state", false);
156     sendBroadcast(intent);
157     }
158     } catch (Settings.SettingNotFoundException e) {
159     Log.d("EKL", "Exception " + e.getMessage() );
160     }
161 torben 1925
162     locMgr = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
163     telMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
164     connMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
165 torben 1931
166 torben 1616
167    
168    
169     device = telMgr.getLine1Number();
170 torben 1931 if(device == null) {
171     device = "";
172     }
173     if (device != null && device.equals("") == false){//Hvis vi kunne aflæse TLF nummer fra sim, så hvis den som en toast
174     Toast.makeText(EKLLauncherActivity.this, "Device: "+device, Toast.LENGTH_SHORT).show();
175     }
176    
177 torben 1927 Log.i(LOGTAG, "Device Line1: " + telMgr.getLine1Number());
178     Log.i(LOGTAG, "Device simserial: " + telMgr.getSimSerialNumber());
179     Log.i(LOGTAG, "Device subscriber: " + telMgr.getSubscriberId());
180     Log.i(LOGTAG, "Device deviceid: " + telMgr.getDeviceId());//IMEI
181 torben 1616
182 torben 1931
183 torben 1927
184 torben 1616 setContentView(R.layout.main);
185     web = (WebView) findViewById(R.id.web);
186    
187     WebSettings settings = web.getSettings();
188    
189 torben 1620
190 torben 1616 settings.setJavaScriptEnabled(true);
191    
192     settings.setAppCacheEnabled(true);
193 torben 1620 settings.setAppCachePath( this.getCacheDir().toString() );
194 torben 1616
195     settings.setJavaScriptCanOpenWindowsAutomatically(false);
196     settings.setGeolocationEnabled(true);
197    
198 torben 1620 settings.setDomStorageEnabled(true);
199 torben 1616
200 torben 1620 settings.setDatabaseEnabled(true);
201 torben 1616 settings.setDatabasePath( this.getCacheDir().toString() );
202    
203    
204     settings.setSupportMultipleWindows(false);
205    
206     web.setWebChromeClient(new CustomChromeClient() );
207 torben 1618 web.setWebViewClient( new DummyWebViewClient() ); // skal have en webviewclient for at kunne styre ved forlad tur
208 torben 1927
209    
210 torben 1619
211 torben 1926 //Hvis at tlf rebooter mit i et område uden dækning er det ikke smart at vi skal vente på data
212     //simHandler.sendEmptyMessage(0);
213     web.loadUrl( URL );
214 torben 1616
215 torben 1620
216 torben 1624 if (!locMgr.isProviderEnabled(LocationManager.GPS_PROVIDER )) {
217     //Settings.Secure.putString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "network,gps");
218    
219     AlertDialog.Builder builder = new AlertDialog.Builder(this);
220     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)")
221     .setPositiveButton("OK", new DialogInterface.OnClickListener() {
222     public void onClick(DialogInterface dialog, int id) {
223 torben 1926 Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS );
224 torben 1624 startActivity(myIntent);
225     }
226     })
227     .create()
228     .show();
229     }
230 torben 1926
231 torben 1616 }
232 torben 1931
233     @Override
234     protected void onStart() {
235     super.onStart();
236    
237     Log.e(LOGTAG, "Starting");
238     PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
239     wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "EklLauncher");
240     wakeLock.acquire();
241     }
242 torben 1926
243     void showMessage(String msg) {
244     AlertDialog.Builder builder = new AlertDialog.Builder(this);
245     builder.setMessage(msg)
246     .setPositiveButton("OK", new DialogInterface.OnClickListener() {
247     public void onClick(DialogInterface dialog, int id) {
248     dialog.dismiss();
249     }
250     })
251     .create()
252     .show();
253    
254     }
255 torben 1616
256     @Override
257 torben 1931 protected void onStop() {
258    
259     Log.e(LOGTAG, "Stopping");
260    
261     if (wakeLock != null && wakeLock.isHeld())
262     wakeLock.release();
263    
264     if (!web.getUrl().equals("about:blank"))
265     web.loadUrl("about:blank");
266    
267     super.onStop();
268 torben 1924 }
269 torben 1931
270     static final int RELOAD = 1;
271     static final int FLUSH = 2;
272     static final int EXIT = 3;
273 torben 1924
274     @Override
275 torben 1616 public boolean onCreateOptionsMenu(Menu menu) {
276     MenuItem item;
277 torben 1931 item = menu.add(0, RELOAD, 0, "Genindlæs side");
278 torben 1616 item.setIcon( R.drawable.ic_menu_refresh );
279    
280 torben 1931 item = menu.add(0, FLUSH, 0, "Slet cache");
281 torben 1616 item.setIcon( R.drawable.ic_menu_delete );
282 torben 1931
283     item = menu.add(0, EXIT, 0, "Forlad");
284     item.setIcon( android.R.drawable.ic_menu_close_clear_cancel);
285    
286 torben 1616 return super.onCreateOptionsMenu(menu);
287     }
288    
289     @Override
290     public boolean onMenuItemSelected(int featureId, MenuItem item) {
291     switch (item.getItemId()) {
292 torben 1931 case RELOAD:
293 torben 1616 web.reload();
294     break;
295 torben 1931 case FLUSH:
296 torben 1616 web.clearCache(true);
297 torben 1927
298     WebStorage.getInstance().deleteAllData();
299     WebStorage.getInstance().deleteOrigin(URL);
300    
301 torben 1616 web.reload();
302     break;
303 torben 1931 case EXIT:
304     this.finish();
305     break;
306 torben 1616 }
307 torben 1931
308 torben 1616 return super.onMenuItemSelected(featureId, item);
309     }
310    
311     Handler timeoutHandler = new Handler() {
312     @Override
313     public void handleMessage(Message msg) {
314     super.handleMessage(msg);
315     web.reload();
316     }
317    
318     };
319    
320    
321 torben 1620
322 torben 1925
323 torben 1616
324 torben 1620 class SimHandler extends Handler {
325    
326     public void testNetwork() {
327     NetworkInfo network = connMgr.getActiveNetworkInfo();
328    
329     if ( (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) || ( network != null && network.getType() == ConnectivityManager.TYPE_WIFI) ) {
330 torben 1616 web.loadUrl( URL );
331     } else {
332 torben 1620 web.loadData("<html><body><h2>afventer netv&aelig;rksforbindelse</h2></body></html>", "text/html", "iso-8859-1");
333 torben 1616 this.sendEmptyMessageDelayed(0, 1000);
334     }
335     }
336 torben 1620
337     @Override
338     public void handleMessage(Message msg) {
339     super.handleMessage(msg);
340    
341     testNetwork();
342     }
343 torben 1616 };
344    
345    
346     }

  ViewVC Help
Powered by ViewVC 1.1.20