/[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 1933 - (hide annotations) (download)
Tue Feb 26 11:15:36 2013 UTC (11 years, 3 months ago) by torben
File size: 10980 byte(s)
URL should be loaded onStart() to make sure the browser component is pointet at the correct url
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 1932 static final String URL = "http://omdeling.info/mobil/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 1933
212 torben 1616
213 torben 1620
214 torben 1624 if (!locMgr.isProviderEnabled(LocationManager.GPS_PROVIDER )) {
215     //Settings.Secure.putString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "network,gps");
216    
217     AlertDialog.Builder builder = new AlertDialog.Builder(this);
218     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)")
219     .setPositiveButton("OK", new DialogInterface.OnClickListener() {
220     public void onClick(DialogInterface dialog, int id) {
221 torben 1926 Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS );
222 torben 1624 startActivity(myIntent);
223     }
224     })
225     .create()
226     .show();
227     }
228 torben 1926
229 torben 1616 }
230 torben 1931
231     @Override
232     protected void onStart() {
233     super.onStart();
234    
235     Log.e(LOGTAG, "Starting");
236     PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
237     wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "EklLauncher");
238     wakeLock.acquire();
239 torben 1933
240     //Hvis at tlf rebooter mit i et område uden dækning er det ikke smart at vi skal vente på data
241     //simHandler.sendEmptyMessage(0);
242     web.loadUrl( URL );
243    
244 torben 1931 }
245 torben 1926
246     void showMessage(String msg) {
247     AlertDialog.Builder builder = new AlertDialog.Builder(this);
248     builder.setMessage(msg)
249     .setPositiveButton("OK", new DialogInterface.OnClickListener() {
250     public void onClick(DialogInterface dialog, int id) {
251     dialog.dismiss();
252     }
253     })
254     .create()
255     .show();
256    
257     }
258 torben 1616
259     @Override
260 torben 1931 protected void onStop() {
261    
262     Log.e(LOGTAG, "Stopping");
263    
264     if (wakeLock != null && wakeLock.isHeld())
265     wakeLock.release();
266    
267     if (!web.getUrl().equals("about:blank"))
268     web.loadUrl("about:blank");
269    
270     super.onStop();
271 torben 1924 }
272 torben 1931
273     static final int RELOAD = 1;
274     static final int FLUSH = 2;
275     static final int EXIT = 3;
276 torben 1924
277     @Override
278 torben 1616 public boolean onCreateOptionsMenu(Menu menu) {
279     MenuItem item;
280 torben 1931 item = menu.add(0, RELOAD, 0, "Genindlæs side");
281 torben 1616 item.setIcon( R.drawable.ic_menu_refresh );
282    
283 torben 1931 item = menu.add(0, FLUSH, 0, "Slet cache");
284 torben 1616 item.setIcon( R.drawable.ic_menu_delete );
285 torben 1931
286     item = menu.add(0, EXIT, 0, "Forlad");
287     item.setIcon( android.R.drawable.ic_menu_close_clear_cancel);
288    
289 torben 1616 return super.onCreateOptionsMenu(menu);
290     }
291    
292     @Override
293     public boolean onMenuItemSelected(int featureId, MenuItem item) {
294     switch (item.getItemId()) {
295 torben 1931 case RELOAD:
296 torben 1616 web.reload();
297     break;
298 torben 1931 case FLUSH:
299 torben 1616 web.clearCache(true);
300 torben 1927
301     WebStorage.getInstance().deleteAllData();
302     WebStorage.getInstance().deleteOrigin(URL);
303    
304 torben 1616 web.reload();
305     break;
306 torben 1931 case EXIT:
307     this.finish();
308     break;
309 torben 1616 }
310 torben 1931
311 torben 1616 return super.onMenuItemSelected(featureId, item);
312     }
313    
314     Handler timeoutHandler = new Handler() {
315     @Override
316     public void handleMessage(Message msg) {
317     super.handleMessage(msg);
318     web.reload();
319     }
320    
321     };
322    
323    
324 torben 1620
325 torben 1925
326 torben 1616
327 torben 1620 class SimHandler extends Handler {
328    
329     public void testNetwork() {
330     NetworkInfo network = connMgr.getActiveNetworkInfo();
331    
332     if ( (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) || ( network != null && network.getType() == ConnectivityManager.TYPE_WIFI) ) {
333 torben 1616 web.loadUrl( URL );
334     } else {
335 torben 1620 web.loadData("<html><body><h2>afventer netv&aelig;rksforbindelse</h2></body></html>", "text/html", "iso-8859-1");
336 torben 1616 this.sendEmptyMessageDelayed(0, 1000);
337     }
338     }
339 torben 1620
340     @Override
341     public void handleMessage(Message msg) {
342     super.handleMessage(msg);
343    
344     testNetwork();
345     }
346 torben 1616 };
347    
348    
349     }

  ViewVC Help
Powered by ViewVC 1.1.20