/[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 1620 - (hide annotations) (download)
Thu Oct 20 20:59:48 2011 UTC (12 years, 7 months ago) by torben
File size: 6910 byte(s)
add cache support
1 torben 1616 package dk.thoerup.ekllauncher;
2    
3     import android.app.Activity;
4     import android.content.Context;
5     import android.content.Intent;
6 torben 1617 import android.net.ConnectivityManager;
7 torben 1619 import android.net.NetworkInfo;
8 torben 1616 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 torben 1618 import android.webkit.WebViewClient;
24 torben 1616 import android.widget.Toast;
25    
26     public class EKLLauncherActivity extends Activity {
27    
28     class CustomChromeClient extends WebChromeClient {
29    
30     @Override
31 torben 1620 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 torben 1616 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 torben 1618
87     class DummyWebViewClient extends WebViewClient {
88     }
89 torben 1616
90     static final String URL = "http://omdeling.info/mobil/ekl/login.php";
91    
92 torben 1617 ConnectivityManager connMgr;
93 torben 1616 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 torben 1617 connMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
127    
128 torben 1616 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 torben 1620
143 torben 1616 settings.setJavaScriptEnabled(true);
144    
145     settings.setAppCacheEnabled(true);
146 torben 1620 settings.setAppCachePath( this.getCacheDir().toString() );
147 torben 1616
148     settings.setJavaScriptCanOpenWindowsAutomatically(false);
149     settings.setGeolocationEnabled(true);
150    
151 torben 1620 settings.setDomStorageEnabled(true);
152 torben 1616
153 torben 1620 settings.setDatabaseEnabled(true);
154 torben 1616 settings.setDatabasePath( this.getCacheDir().toString() );
155    
156    
157     settings.setSupportMultipleWindows(false);
158    
159     web.setWebChromeClient(new CustomChromeClient() );
160 torben 1618 web.setWebViewClient( new DummyWebViewClient() ); // skal have en webviewclient for at kunne styre ved forlad tur
161 torben 1619
162 torben 1616
163 torben 1620 simHandler.sendEmptyMessage(0);
164    
165 torben 1616 }
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 torben 1620
203     SimHandler simHandler = new SimHandler();
204 torben 1616
205 torben 1620 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 torben 1616 web.loadUrl( URL );
212     } else {
213 torben 1620 web.loadData("<html><body><h2>afventer netv&aelig;rksforbindelse</h2></body></html>", "text/html", "iso-8859-1");
214 torben 1616 this.sendEmptyMessageDelayed(0, 1000);
215     }
216     }
217 torben 1620
218     @Override
219     public void handleMessage(Message msg) {
220     super.handleMessage(msg);
221    
222     testNetwork();
223     }
224 torben 1616 };
225    
226    
227     }

  ViewVC Help
Powered by ViewVC 1.1.20