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

  ViewVC Help
Powered by ViewVC 1.1.20