/[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 1620 - (show annotations) (download)
Thu Oct 20 20:59:48 2011 UTC (12 years, 6 months ago) by torben
File size: 6910 byte(s)
add cache support
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.QuotaUpdater;
22 import android.webkit.WebView;
23 import android.webkit.WebViewClient;
24 import android.widget.Toast;
25
26 public class EKLLauncherActivity extends Activity {
27
28 class CustomChromeClient extends WebChromeClient {
29
30 @Override
31 public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota, QuotaUpdater quotaUpdater) {
32 quotaUpdater.updateQuota(totalUsedQuota + 4096);
33 }
34
35
36 @Override
37 public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
38 msg("create window");
39 return super.onCreateWindow(view, dialog, userGesture, resultMsg);
40 }
41
42
43 public void onProgressChanged(WebView view, int progress) {
44 // Activities and WebViews measure progress with different scales.
45 // The progress meter will automatically disappear when we reach 100%
46 EKLLauncherActivity.this.setProgress(progress * 100);
47 }
48
49
50 @Override
51 public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, QuotaUpdater quotaUpdater) {
52 quotaUpdater.updateQuota(estimatedSize); // altid giv tilladelse til større db quota
53 }
54
55
56 @Override
57 public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {
58 callback.invoke(origin, true, true); //altid give tilladelse til geo location
59 }
60 /*
61 @Override
62 public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
63
64 return super.onJsAlert(view, url, message, result);
65 }
66
67 @Override
68 public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
69 Toast.makeText(EKLLauncherActivity.this, "Oh no! " + message, Toast.LENGTH_SHORT).show();
70 return super.onJsConfirm(view, url, message, result);
71 }*/
72
73 @Override
74 public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
75 if (message.trim().toLowerCase().equals("pda identifikation mangler")) {
76 result.confirm(device);
77
78 timeoutHandler.sendEmptyMessageDelayed(1, 500); //efter pdaID er sendt til app'en skal vi genindlæse siden for at tvinge den til at hente data
79 return true;
80 } else {
81 return super.onJsPrompt(view, url, message, defaultValue, result);
82 }
83 }
84
85 }
86
87 class DummyWebViewClient extends WebViewClient {
88 }
89
90 static final String URL = "http://omdeling.info/mobil/ekl/login.php";
91
92 ConnectivityManager connMgr;
93 TelephonyManager telMgr;
94 WebView web;
95 String device = "";
96
97
98 public void msg(String m) {
99 Toast.makeText(EKLLauncherActivity.this, m, Toast.LENGTH_SHORT).show();
100 }
101
102 /** Called when the activity is first created. */
103 @Override
104 public void onCreate(Bundle savedInstanceState) {
105 super.onCreate(savedInstanceState);
106
107 getWindow().requestFeature(Window.FEATURE_PROGRESS);
108
109
110 try {
111 int airplane = Settings.System.getInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON);
112 if (airplane > 0) {
113 Settings.System.putInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);
114 Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
115 intent.putExtra("state", false);
116 sendBroadcast(intent);
117 }
118 } catch (Settings.SettingNotFoundException e) {
119 Log.d("EKL", "Exception " + e.getMessage() );
120 }
121
122
123
124
125 telMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
126 connMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
127
128 device = telMgr.getLine1Number();
129 if (device == null || device.equals("")) {
130 device = telMgr.getDeviceId();
131
132 if(device == null)
133 device = "";
134 }
135
136
137 setContentView(R.layout.main);
138 web = (WebView) findViewById(R.id.web);
139
140 WebSettings settings = web.getSettings();
141
142
143 settings.setJavaScriptEnabled(true);
144
145 settings.setAppCacheEnabled(true);
146 settings.setAppCachePath( this.getCacheDir().toString() );
147
148 settings.setJavaScriptCanOpenWindowsAutomatically(false);
149 settings.setGeolocationEnabled(true);
150
151 settings.setDomStorageEnabled(true);
152
153 settings.setDatabaseEnabled(true);
154 settings.setDatabasePath( this.getCacheDir().toString() );
155
156
157 settings.setSupportMultipleWindows(false);
158
159 web.setWebChromeClient(new CustomChromeClient() );
160 web.setWebViewClient( new DummyWebViewClient() ); // skal have en webviewclient for at kunne styre ved forlad tur
161
162
163 simHandler.sendEmptyMessage(0);
164
165 }
166
167 @Override
168 public boolean onCreateOptionsMenu(Menu menu) {
169 MenuItem item;
170 item = menu.add(0, 1, 0, "Genindlæs side");
171 item.setIcon( R.drawable.ic_menu_refresh );
172
173 item = menu.add(0, 2, 0, "Slet cache");
174 item.setIcon( R.drawable.ic_menu_delete );
175 return super.onCreateOptionsMenu(menu);
176 }
177
178 @Override
179 public boolean onMenuItemSelected(int featureId, MenuItem item) {
180 switch (item.getItemId()) {
181 case 1:
182 web.reload();
183 break;
184 case 2:
185 web.clearCache(true);
186 web.reload();
187 break;
188 }
189 return super.onMenuItemSelected(featureId, item);
190 }
191
192 Handler timeoutHandler = new Handler() {
193 @Override
194 public void handleMessage(Message msg) {
195 super.handleMessage(msg);
196 web.reload();
197 }
198
199 };
200
201
202
203 SimHandler simHandler = new SimHandler();
204
205 class SimHandler extends Handler {
206
207 public void testNetwork() {
208 NetworkInfo network = connMgr.getActiveNetworkInfo();
209
210 if ( (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) || ( network != null && network.getType() == ConnectivityManager.TYPE_WIFI) ) {
211 web.loadUrl( URL );
212 } else {
213 web.loadData("<html><body><h2>afventer netv&aelig;rksforbindelse</h2></body></html>", "text/html", "iso-8859-1");
214 this.sendEmptyMessageDelayed(0, 1000);
215 }
216 }
217
218 @Override
219 public void handleMessage(Message msg) {
220 super.handleMessage(msg);
221
222 testNetwork();
223 }
224 };
225
226
227 }

  ViewVC Help
Powered by ViewVC 1.1.20