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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1621 - (show annotations) (download)
Fri Oct 21 04:59:27 2011 UTC (12 years, 6 months ago) by torben
File size: 6989 byte(s)
Also delete databases when clearing cache
1 package dk.thoerup.ekllauncher;
2
3 import android.app.Activity;
4 import android.content.Context;
5 import android.content.Intent;
6 import android.net.ConnectivityManager;
7 import android.net.NetworkInfo;
8 import android.os.Bundle;
9 import android.os.Handler;
10 import android.os.Message;
11 import android.provider.Settings;
12 import android.telephony.TelephonyManager;
13 import android.util.Log;
14 import android.view.Menu;
15 import android.view.MenuItem;
16 import android.view.Window;
17 import android.webkit.GeolocationPermissions.Callback;
18 import android.webkit.JsPromptResult;
19 import android.webkit.WebChromeClient;
20 import android.webkit.WebSettings;
21 import android.webkit.WebStorage;
22 import android.webkit.WebStorage.QuotaUpdater;
23 import android.webkit.WebView;
24 import android.webkit.WebViewClient;
25 import android.widget.Toast;
26
27 public class EKLLauncherActivity extends Activity {
28
29 class CustomChromeClient extends WebChromeClient {
30
31 @Override
32 public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota, QuotaUpdater quotaUpdater) {
33 quotaUpdater.updateQuota(totalUsedQuota + 4096);
34 }
35
36
37 @Override
38 public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
39 msg("create window");
40 return super.onCreateWindow(view, dialog, userGesture, resultMsg);
41 }
42
43
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 public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
76 if (message.trim().toLowerCase().equals("pda identifikation mangler")) {
77 result.confirm(device);
78
79 timeoutHandler.sendEmptyMessageDelayed(1, 500); //efter pdaID er sendt til app'en skal vi genindlæse siden for at tvinge den til at hente data
80 return true;
81 } else {
82 return super.onJsPrompt(view, url, message, defaultValue, result);
83 }
84 }
85
86 }
87
88 class DummyWebViewClient extends WebViewClient {
89 }
90
91 static final String URL = "http://omdeling.info/mobil/ekl/login.php";
92
93 ConnectivityManager connMgr;
94 TelephonyManager telMgr;
95 WebView web;
96 String device = "";
97
98
99 public void msg(String m) {
100 Toast.makeText(EKLLauncherActivity.this, m, Toast.LENGTH_SHORT).show();
101 }
102
103 /** Called when the activity is first created. */
104 @Override
105 public void onCreate(Bundle savedInstanceState) {
106 super.onCreate(savedInstanceState);
107
108 getWindow().requestFeature(Window.FEATURE_PROGRESS);
109
110
111 try {
112 int airplane = Settings.System.getInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON);
113 if (airplane > 0) {
114 Settings.System.putInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);
115 Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
116 intent.putExtra("state", false);
117 sendBroadcast(intent);
118 }
119 } catch (Settings.SettingNotFoundException e) {
120 Log.d("EKL", "Exception " + e.getMessage() );
121 }
122
123
124
125
126 telMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
127 connMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
128
129 device = telMgr.getLine1Number();
130 if (device == null || device.equals("")) {
131 device = telMgr.getDeviceId();
132
133 if(device == null)
134 device = "";
135 }
136
137
138 setContentView(R.layout.main);
139 web = (WebView) findViewById(R.id.web);
140
141 WebSettings settings = web.getSettings();
142
143
144 settings.setJavaScriptEnabled(true);
145
146 settings.setAppCacheEnabled(true);
147 settings.setAppCachePath( this.getCacheDir().toString() );
148
149 settings.setJavaScriptCanOpenWindowsAutomatically(false);
150 settings.setGeolocationEnabled(true);
151
152 settings.setDomStorageEnabled(true);
153
154 settings.setDatabaseEnabled(true);
155 settings.setDatabasePath( this.getCacheDir().toString() );
156
157
158 settings.setSupportMultipleWindows(false);
159
160 web.setWebChromeClient(new CustomChromeClient() );
161 web.setWebViewClient( new DummyWebViewClient() ); // skal have en webviewclient for at kunne styre ved forlad tur
162
163
164 simHandler.sendEmptyMessage(0);
165
166 }
167
168 @Override
169 public boolean onCreateOptionsMenu(Menu menu) {
170 MenuItem item;
171 item = menu.add(0, 1, 0, "Genindlæs side");
172 item.setIcon( R.drawable.ic_menu_refresh );
173
174 item = menu.add(0, 2, 0, "Slet cache");
175 item.setIcon( R.drawable.ic_menu_delete );
176 return super.onCreateOptionsMenu(menu);
177 }
178
179 @Override
180 public boolean onMenuItemSelected(int featureId, MenuItem item) {
181 switch (item.getItemId()) {
182 case 1:
183 web.reload();
184 break;
185 case 2:
186 WebStorage.getInstance().deleteAllData();
187 web.clearCache(true);
188 web.reload();
189 break;
190 }
191 return super.onMenuItemSelected(featureId, item);
192 }
193
194 Handler timeoutHandler = new Handler() {
195 @Override
196 public void handleMessage(Message msg) {
197 super.handleMessage(msg);
198 web.reload();
199 }
200
201 };
202
203
204
205 SimHandler simHandler = new SimHandler();
206
207 class SimHandler extends Handler {
208
209 public void testNetwork() {
210 NetworkInfo network = connMgr.getActiveNetworkInfo();
211
212 if ( (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) || ( network != null && network.getType() == ConnectivityManager.TYPE_WIFI) ) {
213 web.loadUrl( URL );
214 } else {
215 web.loadData("<html><body><h2>afventer netv&aelig;rksforbindelse</h2></body></html>", "text/html", "iso-8859-1");
216 this.sendEmptyMessageDelayed(0, 1000);
217 }
218 }
219
220 @Override
221 public void handleMessage(Message msg) {
222 super.handleMessage(msg);
223
224 testNetwork();
225 }
226 };
227
228
229 }

  ViewVC Help
Powered by ViewVC 1.1.20