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

  ViewVC Help
Powered by ViewVC 1.1.20