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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1618 by torben, Thu Oct 20 20:30:48 2011 UTC revision 2186 by torben, Fri May 30 12:46:36 2014 UTC
# Line 1  Line 1 
1  package dk.thoerup.ekllauncher;  package dk.thoerup.ekllauncher;
2    
3  import android.app.Activity;  import android.app.Activity;
4    import android.app.AlertDialog;
5  import android.content.Context;  import android.content.Context;
6    import android.content.DialogInterface;
7  import android.content.Intent;  import android.content.Intent;
8    import android.location.LocationManager;
9  import android.net.ConnectivityManager;  import android.net.ConnectivityManager;
10  import android.os.Bundle;  import android.os.Bundle;
11  import android.os.Handler;  import android.os.PowerManager;
 import android.os.Message;  
12  import android.provider.Settings;  import android.provider.Settings;
13  import android.telephony.TelephonyManager;  import android.telephony.TelephonyManager;
14  import android.util.Log;  import android.util.Log;
15  import android.view.Menu;  import android.view.Menu;
16  import android.view.MenuItem;  import android.view.MenuItem;
17  import android.view.Window;  import android.view.Window;
18  import android.webkit.GeolocationPermissions.Callback;  import android.view.WindowManager;
 import android.webkit.JsPromptResult;  
 import android.webkit.WebChromeClient;  
19  import android.webkit.WebSettings;  import android.webkit.WebSettings;
20  import android.webkit.WebStorage.QuotaUpdater;  import android.webkit.WebStorage;
21  import android.webkit.WebView;  import android.webkit.WebView;
22  import android.webkit.WebViewClient;  import android.webkit.WebViewClient;
 import android.widget.Toast;  
23    
24  public class EKLLauncherActivity extends Activity {  public class EKLLauncherActivity extends Activity {
25                    
         class CustomChromeClient extends WebChromeClient {  
                   
                 @Override  
                 public boolean onCreateWindow(WebView view, boolean dialog,  
                                 boolean userGesture, Message resultMsg) {  
                         msg("create window");  
                         return super.onCreateWindow(view, dialog, userGesture, resultMsg);  
                 }  
   
   
                 public void onProgressChanged(WebView view, int progress) {  
                         // Activities and WebViews measure progress with different scales.  
                         // The progress meter will automatically disappear when we reach 100%  
                         EKLLauncherActivity.this.setProgress(progress * 100);  
                 }  
26    
   
                 @Override  
                 public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize, long totalUsedQuota, QuotaUpdater quotaUpdater) {  
                         quotaUpdater.updateQuota(estimatedSize); // altid giv tilladelse til større db quota  
                 }  
27                    
28    
                 @Override  
                 public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {  
                         callback.invoke(origin, true, true); //altid give tilladelse til geo location  
                 }  
 /*  
                 @Override  
                 public boolean onJsAlert(WebView view, String url, String message, JsResult result) {  
                           
                         return super.onJsAlert(view, url, message, result);  
                 }  
   
                 @Override  
                 public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {  
                         Toast.makeText(EKLLauncherActivity.this, "Oh no! " + message, Toast.LENGTH_SHORT).show();  
                         return super.onJsConfirm(view, url, message, result);  
                 }*/  
   
                 @Override  
                 public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {  
                         if (message.trim().toLowerCase().equals("pda identifikation mangler")) {  
                                 result.confirm(device);  
                                   
                                 timeoutHandler.sendEmptyMessageDelayed(1, 500); //efter pdaID er sendt til app'en skal vi genindlæse siden for at tvinge den til at hente data  
                                 return true;  
                         } else {  
                                 return super.onJsPrompt(view, url, message, defaultValue, result);  
                         }                                                                        
                 }  
                   
         }  
   
29          class DummyWebViewClient extends WebViewClient {                          class DummyWebViewClient extends WebViewClient {                
30          }          }
31                    
32          static final String URL = "http://omdeling.info/mobil/ekl/login.php";          public static final String LOGTAG = "EklLauncher";
33            static final String URL = "http://omdeling.info/mobil/ekl/";
34            //static final String URL = "http://t-hoerup.dk/android_js.html";
35                    
36            LocationManager locMgr;
37          ConnectivityManager connMgr;          ConnectivityManager connMgr;
38          TelephonyManager telMgr;          TelephonyManager telMgr;
39          WebView web;          WebView web;
40          String device = "";          
41            PowerManager.WakeLock wakeLock;
42                    
43                    
44          public void msg(String m) {          @Override
45                  Toast.makeText(EKLLauncherActivity.this, m, Toast.LENGTH_SHORT).show();          public void onAttachedToWindow() {
46                this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
47                super.onAttachedToWindow();
48          }          }
49                    
50      /** Called when the activity is first created. */      /** Called when the activity is first created. */
51      @Override          @Override
52      public void onCreate(Bundle savedInstanceState) {      public void onCreate(Bundle savedInstanceState) {
53          super.onCreate(savedInstanceState);          super.onCreate(savedInstanceState);
54                    
55            Log.e(LOGTAG, "Creating");
56            
57          getWindow().requestFeature(Window.FEATURE_PROGRESS);          getWindow().requestFeature(Window.FEATURE_PROGRESS);
58                    
59                    
60          try {          try {
61                  int airplane = Settings.System.getInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON);                  int airplane = Settings.System.getInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON);
62                    
63                  if (airplane > 0) {                  if (airplane > 0) {
64                          Settings.System.putInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);                          Settings.System.putInt(this.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0);
65                          Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);                          Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
# Line 112  public class EKLLauncherActivity extends Line 69  public class EKLLauncherActivity extends
69          } catch (Settings.SettingNotFoundException e) {          } catch (Settings.SettingNotFoundException e) {
70                  Log.d("EKL", "Exception " + e.getMessage() );                  Log.d("EKL", "Exception " + e.getMessage() );
71          }          }
72            
73                    locMgr = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
           
           
74          telMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);          telMgr = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
75          connMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);          connMgr = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);        
76                            
         device = telMgr.getLine1Number();  
         if (device == null || device.equals("")) {  
                 device = telMgr.getDeviceId();  
                   
                 if(device == null)  
                         device = "";  
         }  
77                    
78          
79                    
80                    
81          setContentView(R.layout.main);          setContentView(R.layout.main);
82          web = (WebView) findViewById(R.id.web);          web = (WebView) findViewById(R.id.web);
83                    
84          WebSettings settings = web.getSettings();          WebSettings settings = web.getSettings();
85                    
86                            
87          settings.setJavaScriptEnabled(true);          settings.setJavaScriptEnabled(true);
88                    
89          settings.setAppCacheEnabled(true);          settings.setAppCacheEnabled(true);
90            settings.setAppCachePath( this.getCacheDir().toString() );
91                    
92          settings.setJavaScriptCanOpenWindowsAutomatically(false);          settings.setJavaScriptCanOpenWindowsAutomatically(false);
93          settings.setGeolocationEnabled(true);          settings.setGeolocationEnabled(true);
94                    
95          settings.setDomStorageEnabled(true);                  settings.setDomStorageEnabled(true);
         settings.setDatabaseEnabled(true);  
96                    
97            settings.setDatabaseEnabled(true);        
98          settings.setDatabasePath( this.getCacheDir().toString() );          settings.setDatabasePath( this.getCacheDir().toString() );
99    
100                    
101          settings.setSupportMultipleWindows(false);          settings.setSupportMultipleWindows(false);
102                    
103          web.setWebChromeClient(new CustomChromeClient() );          JsPhoneObject jsPhone = new JsPhoneObject(telMgr);
104            
105            web.addJavascriptInterface( jsPhone , "jsPhone");
106            
107            web.setWebChromeClient(new EKLChromeClient(this) );
108          web.setWebViewClient( new DummyWebViewClient() ); // skal have en webviewclient for at kunne styre ved forlad tur          web.setWebViewClient( new DummyWebViewClient() ); // skal have en webviewclient for at kunne styre ved forlad tur
109                    
110    
111                    
112          if ( (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) || connMgr.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI) {          
113                  web.loadUrl( URL );          if (!locMgr.isProviderEnabled(LocationManager.GPS_PROVIDER )) {
114          } else {                  //Settings.Secure.putString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "network,gps");
115                  web.loadData("<html><body><h2>afventer netv&aelig;rksforbindelse</h2></body></html>", "text/html", "iso-8859-1");                  
116                  simHandler.sendEmptyMessageDelayed(0, 1500);                  AlertDialog.Builder builder = new AlertDialog.Builder(this);
117                    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)")
118                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
119                    public void onClick(DialogInterface dialog, int id) {
120                            Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS );                      
121                        startActivity(myIntent);      
122                    }
123                })
124                .create()
125                .show();      
126          }          }
127                    
128      }      }
129            
130            @Override
131            protected void onStart() {
132                    super.onStart();
133                    
134                    Log.e(LOGTAG, "Starting");
135            PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
136            wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "EklLauncher");
137            wakeLock.acquire();
138            
139            //Hvis at tlf rebooter mit i et område uden dækning er det ikke smart at vi skal vente på data
140            //simHandler.sendEmptyMessage(0);
141            web.loadUrl( URL );
142            
143            }
144        
145    
146            @Override
147            protected void onStop() {
148                    
149            Log.e(LOGTAG, "Stopping");
150            
151                    if (wakeLock != null && wakeLock.isHeld())
152                            wakeLock.release();
153                    
154                    if (!web.getUrl().equals("about:blank"))
155                            web.loadUrl("about:blank");
156                    
157                    super.onStop();
158            }
159            
160            static final int RELOAD = 1;
161            static final int FLUSH = 2;
162            static final int EXIT = 3;
163    
164          @Override          @Override
165          public boolean onCreateOptionsMenu(Menu menu) {          public boolean onCreateOptionsMenu(Menu menu) {
166                  MenuItem item;                  MenuItem item;
167                  item = menu.add(0, 1, 0, "Genindlæs side");                  item = menu.add(0, RELOAD, 0, "Genindlæs side");
168                  item.setIcon( R.drawable.ic_menu_refresh );                  item.setIcon( R.drawable.ic_menu_refresh );
169                                    
170                  item = menu.add(0, 2, 0, "Slet cache");                  item = menu.add(0, FLUSH, 0, "Slet cache");
171                  item.setIcon( R.drawable.ic_menu_delete );                  item.setIcon( R.drawable.ic_menu_delete );
172                    
173                    item = menu.add(0, EXIT, 0, "Forlad");
174                    item.setIcon( android.R.drawable.ic_menu_close_clear_cancel);
175                    
176                  return super.onCreateOptionsMenu(menu);                  return super.onCreateOptionsMenu(menu);
177          }          }
178    
179          @Override          @Override
180          public boolean onMenuItemSelected(int featureId, MenuItem item) {          public boolean onMenuItemSelected(int featureId, MenuItem item) {
181                  switch (item.getItemId()) {                  switch (item.getItemId()) {
182                  case 1:                  case RELOAD:
183                          web.reload();                          web.reload();
184                          break;                          break;
185                  case 2:                  case FLUSH:
186                          web.clearCache(true);                          web.clearCache(true);
187                            
188                            WebStorage.getInstance().deleteAllData();                      
189                            WebStorage.getInstance().deleteOrigin(URL);
190                            
191                          web.reload();                          web.reload();
192                          break;                          break;
193                    case EXIT:                                                      
194                            this.finish();
195                            break;                  
196                  }                  }
197                    
198                  return super.onMenuItemSelected(featureId, item);                  return super.onMenuItemSelected(featureId, item);
199          }          }
200                    
201        /*void showMessage(String msg) {
202            AlertDialog.Builder builder = new AlertDialog.Builder(this);
203            builder.setMessage(msg)
204        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
205            public void onClick(DialogInterface dialog, int id) {
206                dialog.dismiss();
207            }
208        })
209        .create()
210        .show();      
211            
212    }*/    
213            
214            /* Proof-of-concept code
215          Handler timeoutHandler = new Handler() {          Handler timeoutHandler = new Handler() {
216                  @Override                  @Override
217                  public void handleMessage(Message msg) {                  public void handleMessage(Message msg) {
# Line 195  public class EKLLauncherActivity extends Line 221  public class EKLLauncherActivity extends
221                                    
222          };          };
223                    
224    
225                    
226                    class SimHandler extends Handler {
227          Handler simHandler = new Handler() {                  
228                  @Override                  public void testNetwork() {
229                  public void handleMessage(Message msg) {                          NetworkInfo network = connMgr.getActiveNetworkInfo();
230                          super.handleMessage(msg);                          
231                          if (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) {                          if ( (telMgr.getSimState() == TelephonyManager.SIM_STATE_READY && telMgr.getDataState() == TelephonyManager.DATA_CONNECTED) || ( network != null && network.getType() == ConnectivityManager.TYPE_WIFI) ) {
232                                  web.loadUrl( URL );                                  web.loadUrl( URL );
233                          } else {                          } else {
234                            web.loadData("<html><body><h2>afventer netv&aelig;rksforbindelse</h2></body></html>", "text/html", "iso-8859-1");
235                                  this.sendEmptyMessageDelayed(0, 1000);                                  this.sendEmptyMessageDelayed(0, 1000);
236                          }                          }
237                  }                  }
238                    
239                    @Override
240                    public void handleMessage(Message msg) {
241                            super.handleMessage(msg);
242                            
243                            testNetwork();
244                    }
245          };          };
246            */
247            
248  }  }

Legend:
Removed from v.1618  
changed lines
  Added in v.2186

  ViewVC Help
Powered by ViewVC 1.1.20