mobile_template 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. data/lib/mobile_template/version.rb +1 -1
  2. data/mobile_template.gemspec +1 -1
  3. data/templates/assets/Gemfile +1 -1
  4. data/templates/assets/source/javascripts/vendor/cordova.js +2106 -1975
  5. data/templates/assets/source/javascripts/vendor/jquery.js +614 -477
  6. data/templates/assets/source/javascripts/vendor/jquery.mobile.js +519 -378
  7. data/templates/assets/source/stylesheets/vendor/jquery.mobile.css.scss +683 -502
  8. data/templates/cordova_android/VERSION +1 -1
  9. data/templates/cordova_android/bin/create +5 -1
  10. data/templates/cordova_android/bin/templates/project/cordova/create +5 -0
  11. data/templates/cordova_android/bin/templates/project/cordova/debug +1 -1
  12. data/templates/cordova_android/bin/templates/project/cordova/templates/project/AndroidManifest.xml +18 -25
  13. data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/index.html +6 -6
  14. data/templates/cordova_android/framework/assets/js/cordova.android.js +2106 -1975
  15. data/templates/cordova_android/framework/assets/www/index.html +1 -1
  16. data/templates/cordova_android/framework/build.xml +2 -42
  17. data/templates/cordova_android/framework/project.properties +1 -1
  18. data/templates/cordova_android/framework/res/drawable/splash.png +0 -0
  19. data/templates/cordova_android/framework/res/drawable-hdpi/icon.png +0 -0
  20. data/templates/cordova_android/framework/res/drawable-ldpi/icon.png +0 -0
  21. data/templates/cordova_android/framework/res/drawable-mdpi/icon.png +0 -0
  22. data/templates/cordova_android/framework/res/xml/plugins.xml +2 -1
  23. data/templates/cordova_android/framework/src/com/phonegap/api/PluginManager.java +1 -0
  24. data/templates/cordova_android/framework/src/org/apache/cordova/AudioPlayer.java +24 -16
  25. data/templates/cordova_android/framework/src/org/apache/cordova/CameraLauncher.java +35 -10
  26. data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessor.java +2 -1
  27. data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessorSdk5.java +67 -65
  28. data/templates/cordova_android/framework/src/org/apache/cordova/ContactManager.java +51 -63
  29. data/templates/cordova_android/framework/src/org/apache/cordova/CordovaChromeClient.java +3 -0
  30. data/templates/cordova_android/framework/src/org/apache/cordova/CordovaWebViewClient.java +6 -2
  31. data/templates/cordova_android/framework/src/org/apache/cordova/Device.java +108 -108
  32. data/templates/cordova_android/framework/src/org/apache/cordova/DroidGap.java +110 -77
  33. data/templates/cordova_android/framework/src/org/apache/cordova/FileTransfer.java +90 -44
  34. data/templates/cordova_android/framework/src/org/apache/cordova/FileUtils.java +20 -20
  35. data/templates/cordova_android/framework/src/org/apache/cordova/LinearLayoutSoftKeyboardDetect.java +2 -2
  36. data/templates/cordova_android/framework/src/org/apache/cordova/NetworkManager.java +7 -8
  37. data/templates/cordova_android/framework/src/org/apache/cordova/Notification.java +2 -2
  38. data/templates/cordova_android/framework/src/org/apache/cordova/SplashScreen.java +23 -0
  39. data/templates/cordova_android/framework/src/org/apache/cordova/Storage.java +3 -3
  40. data/templates/cordova_android/framework/src/org/apache/cordova/api/CordovaInterface.java +2 -0
  41. data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginEntry.java +119 -0
  42. data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginManager.java +260 -258
  43. data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginResult.java +2 -2
  44. data/templates/cordova_android/releasenotes.md +42 -0
  45. data/templates/cordova_android/test/.classpath +8 -0
  46. data/templates/cordova_android/test/.project +33 -0
  47. data/templates/cordova_android/test/AndroidManifest.xml +87 -0
  48. data/templates/cordova_android/test/README.md +23 -0
  49. data/templates/cordova_android/test/ant.properties +17 -0
  50. data/templates/cordova_android/test/assets/www/backbuttonmultipage/index.html +23 -0
  51. data/templates/cordova_android/test/assets/www/backbuttonmultipage/sample2.html +23 -0
  52. data/templates/cordova_android/test/assets/www/backbuttonmultipage/sample3.html +26 -0
  53. data/templates/cordova_android/test/assets/www/background/index.html +99 -0
  54. data/templates/cordova_android/test/assets/www/background/index2.html +98 -0
  55. data/templates/cordova_android/test/assets/www/cordova-1.6.0.js +4985 -0
  56. data/templates/cordova_android/test/assets/www/cordova.js +2 -0
  57. data/templates/cordova_android/test/assets/www/htmlnotfound/error.html +1 -0
  58. data/templates/cordova_android/test/assets/www/iframe/index.html +33 -0
  59. data/templates/cordova_android/test/assets/www/iframe/index2.html +24 -0
  60. data/templates/cordova_android/test/assets/www/index.html +47 -0
  61. data/templates/cordova_android/test/assets/www/jqmtabbackbutton/index.html +49 -0
  62. data/templates/cordova_android/test/assets/www/jqmtabbackbutton/tab1.html +29 -0
  63. data/templates/cordova_android/test/assets/www/jqmtabbackbutton/tab2.html +30 -0
  64. data/templates/cordova_android/test/assets/www/jqmtabbackbutton/tab3.html +30 -0
  65. data/templates/cordova_android/test/assets/www/lifecycle/index.html +108 -0
  66. data/templates/cordova_android/test/assets/www/lifecycle/index2.html +104 -0
  67. data/templates/cordova_android/test/assets/www/main.js +150 -0
  68. data/templates/cordova_android/test/assets/www/master.css +117 -0
  69. data/templates/cordova_android/test/assets/www/menus/index.html +29 -0
  70. data/templates/cordova_android/test/assets/www/splashscreen/index.html +22 -0
  71. data/templates/cordova_android/test/assets/www/userwebview/index.html +49 -0
  72. data/templates/cordova_android/test/assets/www/whitelist/index.html +29 -0
  73. data/templates/cordova_android/test/assets/www/whitelist/index2.html +23 -0
  74. data/templates/cordova_android/test/assets/www/xhr/index.html +48 -0
  75. data/templates/cordova_android/test/build.xml +85 -0
  76. data/templates/cordova_android/test/libs/cordova-1.6.0.jar +0 -0
  77. data/templates/cordova_android/test/project.properties +11 -0
  78. data/templates/cordova_android/{framework → test}/res/drawable/icon.png +0 -0
  79. data/templates/cordova_android/test/res/drawable/sandy.jpg +0 -0
  80. data/templates/cordova_android/test/res/drawable-hdpi/ic_launcher.png +0 -0
  81. data/templates/cordova_android/test/res/drawable-ldpi/ic_launcher.png +0 -0
  82. data/templates/cordova_android/test/res/drawable-mdpi/ic_launcher.png +0 -0
  83. data/templates/cordova_android/test/res/layout/main.xml +13 -0
  84. data/templates/cordova_android/test/res/values/strings.xml +4 -0
  85. data/templates/cordova_android/{bin/templates/project/cordova/templates/project → test}/res/xml/cordova.xml +0 -0
  86. data/templates/cordova_android/{bin/templates/project/cordova/templates/project → test}/res/xml/plugins.xml +1 -1
  87. data/templates/cordova_android/test/src/org/apache/cordova/test/ActivityPlugin.java +81 -0
  88. data/templates/cordova_android/test/src/org/apache/cordova/test/FixWebView.java +43 -0
  89. data/templates/cordova_android/test/src/org/apache/cordova/test/backbuttonmultipage.java +30 -0
  90. data/templates/cordova_android/test/src/org/apache/cordova/test/background.java +34 -0
  91. data/templates/cordova_android/test/src/org/apache/cordova/test/errorurl.java +32 -0
  92. data/templates/cordova_android/test/src/org/apache/cordova/test/htmlnotfound.java +31 -0
  93. data/templates/cordova_android/test/src/org/apache/cordova/test/iframe.java +30 -0
  94. data/templates/cordova_android/test/src/org/apache/cordova/test/jqmtabbackbutton.java +30 -0
  95. data/templates/cordova_android/test/src/org/apache/cordova/test/lifecycle.java +30 -0
  96. data/templates/cordova_android/test/src/org/apache/cordova/test/loading.java +31 -0
  97. data/templates/cordova_android/test/src/org/apache/cordova/test/menus.java +80 -0
  98. data/templates/cordova_android/test/src/org/apache/cordova/test/splashscreen.java +35 -0
  99. data/templates/cordova_android/test/src/org/apache/cordova/test/tests.java +32 -0
  100. data/templates/cordova_android/test/src/org/apache/cordova/test/timeout.java +34 -0
  101. data/templates/cordova_android/test/src/org/apache/cordova/test/userwebview.java +72 -0
  102. data/templates/cordova_android/test/src/org/apache/cordova/test/whitelist.java +51 -0
  103. data/templates/cordova_android/test/src/org/apache/cordova/test/xhr.java +30 -0
  104. metadata +83 -30
  105. data/templates/cordova_android/framework/assets/js/accelerometer.js +0 -137
  106. data/templates/cordova_android/framework/assets/js/app.js +0 -89
  107. data/templates/cordova_android/framework/assets/js/battery.js +0 -134
  108. data/templates/cordova_android/framework/assets/js/camera.js +0 -168
  109. data/templates/cordova_android/framework/assets/js/capture.js +0 -203
  110. data/templates/cordova_android/framework/assets/js/compass.js +0 -168
  111. data/templates/cordova_android/framework/assets/js/contact.js +0 -310
  112. data/templates/cordova_android/framework/assets/js/cordova.js.base +0 -924
  113. data/templates/cordova_android/framework/assets/js/crypto.js +0 -54
  114. data/templates/cordova_android/framework/assets/js/device.js +0 -83
  115. data/templates/cordova_android/framework/assets/js/file.js +0 -1082
  116. data/templates/cordova_android/framework/assets/js/filetransfer.js +0 -125
  117. data/templates/cordova_android/framework/assets/js/geolocation.js +0 -209
  118. data/templates/cordova_android/framework/assets/js/header.txt +0 -19
  119. data/templates/cordova_android/framework/assets/js/media.js +0 -233
  120. data/templates/cordova_android/framework/assets/js/network.js +0 -100
  121. data/templates/cordova_android/framework/assets/js/notification.js +0 -133
  122. data/templates/cordova_android/framework/assets/js/position.js +0 -100
  123. data/templates/cordova_android/framework/assets/js/storage.js +0 -439
@@ -216,6 +216,9 @@ public class CordovaChromeClient extends WebChromeClient {
216
216
  // Cordova JS has initialized, so show webview
217
217
  // (This solves white flash seen when rendering HTML)
218
218
  else if (reqOk && defaultValue != null && defaultValue.equals("gap_init:")) {
219
+ if (ctx.splashscreen != 0) {
220
+ ctx.root.setBackgroundResource(0);
221
+ }
219
222
  ctx.appView.setVisibility(View.VISIBLE);
220
223
  ctx.spinnerStop();
221
224
  result.confirm("OK");
@@ -64,7 +64,7 @@ public class CordovaWebViewClient extends WebViewClient {
64
64
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
65
65
 
66
66
  // First give any plugins the chance to handle the url themselves
67
- if (this.ctx.pluginManager.onOverrideUrlLoading(url)) {
67
+ if ((this.ctx.pluginManager != null) && this.ctx.pluginManager.onOverrideUrlLoading(url)) {
68
68
  }
69
69
 
70
70
  // If dialing phone (tel:5551212)
@@ -217,7 +217,8 @@ public class CordovaWebViewClient extends WebViewClient {
217
217
  // not loaded yet then just set a flag so that the onNativeReady can be fired
218
218
  // from the JS side when the JS gets to that code.
219
219
  if (!url.equals("about:blank")) {
220
- ctx.appView.loadUrl("javascript:try{ require('cordova/channel').onNativeReady.fire();}catch(e){_nativeReady = true;}");
220
+ ctx.appView.loadUrl("javascript:try{ cordova.require('cordova/channel').onNativeReady.fire();}catch(e){_nativeReady = true;}");
221
+ this.ctx.postMessage("onNativeReady", null);
221
222
  }
222
223
 
223
224
  // Make app visible after 2 sec in case there was a JS error and Cordova JS never initialized correctly
@@ -228,6 +229,9 @@ public class CordovaWebViewClient extends WebViewClient {
228
229
  Thread.sleep(2000);
229
230
  ctx.runOnUiThread(new Runnable() {
230
231
  public void run() {
232
+ if (ctx.splashscreen != 0) {
233
+ ctx.root.setBackgroundResource(0);
234
+ }
231
235
  ctx.appView.setVisibility(View.VISIBLE);
232
236
  ctx.spinnerStop();
233
237
  }
@@ -38,73 +38,73 @@ import android.telephony.TelephonyManager;
38
38
  public class Device extends Plugin {
39
39
  public static final String TAG = "Device";
40
40
 
41
- public static String cordovaVersion = "1.5.0"; // Cordova version
42
- public static String platform = "Android"; // Device OS
43
- public static String uuid; // Device UUID
41
+ public static String cordovaVersion = "1.7.0"; // Cordova version
42
+ public static String platform = "Android"; // Device OS
43
+ public static String uuid; // Device UUID
44
44
 
45
45
  BroadcastReceiver telephonyReceiver = null;
46
46
 
47
47
  /**
48
48
  * Constructor.
49
49
  */
50
- public Device() {
50
+ public Device() {
51
51
  }
52
-
53
- /**
54
- * Sets the context of the Command. This can then be used to do things like
55
- * get file paths associated with the Activity.
56
- *
57
- * @param ctx The context of the main Activity.
58
- */
59
- public void setContext(CordovaInterface ctx) {
60
- super.setContext(ctx);
52
+
53
+ /**
54
+ * Sets the context of the Command. This can then be used to do things like
55
+ * get file paths associated with the Activity.
56
+ *
57
+ * @param ctx The context of the main Activity.
58
+ */
59
+ public void setContext(CordovaInterface ctx) {
60
+ super.setContext(ctx);
61
61
  Device.uuid = getUuid();
62
62
  this.initTelephonyReceiver();
63
- }
63
+ }
64
64
 
65
- /**
66
- * Executes the request and returns PluginResult.
67
- *
68
- * @param action The action to execute.
69
- * @param args JSONArry of arguments for the plugin.
70
- * @param callbackId The callback id used when calling back into JavaScript.
71
- * @return A PluginResult object with a status and message.
72
- */
73
- public PluginResult execute(String action, JSONArray args, String callbackId) {
74
- PluginResult.Status status = PluginResult.Status.OK;
75
- String result = "";
76
-
77
- try {
78
- if (action.equals("getDeviceInfo")) {
79
- JSONObject r = new JSONObject();
80
- r.put("uuid", Device.uuid);
81
- r.put("version", this.getOSVersion());
82
- r.put("platform", Device.platform);
83
- r.put("name", this.getProductName());
84
- r.put("cordova", Device.cordovaVersion);
85
- //JSONObject pg = new JSONObject();
86
- //pg.put("version", Device.CordovaVersion);
87
- //r.put("cordova", pg);
88
- return new PluginResult(status, r);
89
- }
90
- return new PluginResult(status, result);
91
- } catch (JSONException e) {
92
- return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
93
- }
94
- }
65
+ /**
66
+ * Executes the request and returns PluginResult.
67
+ *
68
+ * @param action The action to execute.
69
+ * @param args JSONArry of arguments for the plugin.
70
+ * @param callbackId The callback id used when calling back into JavaScript.
71
+ * @return A PluginResult object with a status and message.
72
+ */
73
+ public PluginResult execute(String action, JSONArray args, String callbackId) {
74
+ PluginResult.Status status = PluginResult.Status.OK;
75
+ String result = "";
76
+
77
+ try {
78
+ if (action.equals("getDeviceInfo")) {
79
+ JSONObject r = new JSONObject();
80
+ r.put("uuid", Device.uuid);
81
+ r.put("version", this.getOSVersion());
82
+ r.put("platform", Device.platform);
83
+ r.put("name", this.getProductName());
84
+ r.put("cordova", Device.cordovaVersion);
85
+ //JSONObject pg = new JSONObject();
86
+ //pg.put("version", Device.CordovaVersion);
87
+ //r.put("cordova", pg);
88
+ return new PluginResult(status, r);
89
+ }
90
+ return new PluginResult(status, result);
91
+ } catch (JSONException e) {
92
+ return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
93
+ }
94
+ }
95
95
 
96
- /**
97
- * Identifies if action to be executed returns a value and should be run synchronously.
98
- *
99
- * @param action The action to execute
100
- * @return T=returns value
101
- */
102
- public boolean isSynch(String action) {
103
- if (action.equals("getDeviceInfo")) {
104
- return true;
105
- }
106
- return false;
107
- }
96
+ /**
97
+ * Identifies if action to be executed returns a value and should be run synchronously.
98
+ *
99
+ * @param action The action to execute
100
+ * @return T=returns value
101
+ */
102
+ public boolean isSynch(String action) {
103
+ if (action.equals("getDeviceInfo")) {
104
+ return true;
105
+ }
106
+ return false;
107
+ }
108
108
 
109
109
  /**
110
110
  * Unregister receiver.
@@ -156,59 +156,59 @@ public class Device extends Plugin {
156
156
  this.ctx.registerReceiver(this.telephonyReceiver, intentFilter);
157
157
  }
158
158
 
159
- /**
160
- * Get the OS name.
161
- *
162
- * @return
163
- */
164
- public String getPlatform() {
165
- return Device.platform;
166
- }
167
-
168
- /**
169
- * Get the device's Universally Unique Identifier (UUID).
170
- *
171
- * @return
172
- */
173
- public String getUuid() {
174
- String uuid = Settings.Secure.getString(this.ctx.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
175
- return uuid;
176
- }
159
+ /**
160
+ * Get the OS name.
161
+ *
162
+ * @return
163
+ */
164
+ public String getPlatform() {
165
+ return Device.platform;
166
+ }
167
+
168
+ /**
169
+ * Get the device's Universally Unique Identifier (UUID).
170
+ *
171
+ * @return
172
+ */
173
+ public String getUuid() {
174
+ String uuid = Settings.Secure.getString(this.ctx.getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
175
+ return uuid;
176
+ }
177
177
 
178
- /**
179
- * Get the Cordova version.
180
- *
181
- * @return
182
- */
183
- public String getCordovaVersion() {
184
- return Device.cordovaVersion;
185
- }
186
-
187
- public String getModel() {
188
- String model = android.os.Build.MODEL;
189
- return model;
190
- }
191
-
192
- public String getProductName() {
193
- String productname = android.os.Build.PRODUCT;
194
- return productname;
195
- }
196
-
197
- /**
198
- * Get the OS version.
199
- *
200
- * @return
201
- */
202
- public String getOSVersion() {
203
- String osversion = android.os.Build.VERSION.RELEASE;
204
- return osversion;
205
- }
206
-
207
- public String getSDKVersion() {
208
- String sdkversion = android.os.Build.VERSION.SDK;
209
- return sdkversion;
210
- }
211
-
178
+ /**
179
+ * Get the Cordova version.
180
+ *
181
+ * @return
182
+ */
183
+ public String getCordovaVersion() {
184
+ return Device.cordovaVersion;
185
+ }
186
+
187
+ public String getModel() {
188
+ String model = android.os.Build.MODEL;
189
+ return model;
190
+ }
191
+
192
+ public String getProductName() {
193
+ String productname = android.os.Build.PRODUCT;
194
+ return productname;
195
+ }
196
+
197
+ /**
198
+ * Get the OS version.
199
+ *
200
+ * @return
201
+ */
202
+ public String getOSVersion() {
203
+ String osversion = android.os.Build.VERSION.RELEASE;
204
+ return osversion;
205
+ }
206
+
207
+ public String getSDKVersion() {
208
+ String sdkversion = android.os.Build.VERSION.SDK;
209
+ return sdkversion;
210
+ }
211
+
212
212
 
213
213
  public String getTimeZoneID() {
214
214
  TimeZone tz = TimeZone.getDefault();
@@ -37,17 +37,18 @@ import org.xmlpull.v1.XmlPullParserException;
37
37
 
38
38
  import android.app.Activity;
39
39
  import android.app.AlertDialog;
40
+ import android.app.Dialog;
40
41
  import android.app.ProgressDialog;
41
42
  import android.content.Context;
42
43
  import android.content.DialogInterface;
43
44
  import android.content.Intent;
44
45
  import android.content.res.Configuration;
45
46
  import android.content.res.XmlResourceParser;
46
- import android.database.Cursor;
47
47
  import android.graphics.Color;
48
48
  import android.media.AudioManager;
49
49
  import android.net.Uri;
50
50
  import android.os.Bundle;
51
+ import android.os.Handler;
51
52
  import android.view.Display;
52
53
  import android.view.KeyEvent;
53
54
  import android.view.Menu;
@@ -56,6 +57,7 @@ import android.view.View;
56
57
  import android.view.ViewGroup;
57
58
  import android.view.Window;
58
59
  import android.view.WindowManager;
60
+ import android.webkit.WebChromeClient;
59
61
  import android.webkit.WebSettings;
60
62
  import android.webkit.WebSettings.LayoutAlgorithm;
61
63
  import android.webkit.WebView;
@@ -345,22 +347,33 @@ public class DroidGap extends Activity implements CordovaInterface {
345
347
  }
346
348
 
347
349
  /**
348
- * Create and initialize web container.
350
+ * Create and initialize web container with default web view objects.
349
351
  */
350
352
  public void init() {
353
+ this.init(new WebView(DroidGap.this), new CordovaWebViewClient(this), new CordovaChromeClient(DroidGap.this));
354
+ }
355
+
356
+ /**
357
+ * Initialize web container with web view objects.
358
+ *
359
+ * @param webView
360
+ * @param webViewClient
361
+ * @param webChromeClient
362
+ */
363
+ public void init(WebView webView, WebViewClient webViewClient, WebChromeClient webChromeClient) {
351
364
  LOG.d(TAG, "DroidGap.init()");
352
365
 
353
- // Create web container
354
- this.appView = new WebView(DroidGap.this);
366
+ // Set up web container
367
+ this.appView = webView;
355
368
  this.appView.setId(100);
356
-
369
+
357
370
  this.appView.setLayoutParams(new LinearLayout.LayoutParams(
358
371
  ViewGroup.LayoutParams.FILL_PARENT,
359
372
  ViewGroup.LayoutParams.FILL_PARENT,
360
373
  1.0F));
361
374
 
362
- this.appView.setWebChromeClient(new CordovaChromeClient(DroidGap.this));
363
- this.setWebViewClient(this.appView, new CordovaWebViewClient(this));
375
+ this.appView.setWebChromeClient(webChromeClient);
376
+ this.setWebViewClient(this.appView, webViewClient);
364
377
 
365
378
  this.appView.setInitialScale(0);
366
379
  this.appView.setVerticalScrollBarEnabled(false);
@@ -393,6 +406,9 @@ public class DroidGap extends Activity implements CordovaInterface {
393
406
 
394
407
  // Clear cancel flag
395
408
  this.cancelLoadUrl = false;
409
+
410
+ // Create plugin manager
411
+ this.pluginManager = new PluginManager(this.appView, this);
396
412
  }
397
413
 
398
414
  /**
@@ -418,9 +434,6 @@ public class DroidGap extends Activity implements CordovaInterface {
418
434
 
419
435
  // If spashscreen
420
436
  this.splashscreen = this.getIntegerProperty("splashscreen", 0);
421
- if ((this.urls.size() == 0) && (this.splashscreen != 0)) {
422
- root.setBackgroundResource(this.splashscreen);
423
- }
424
437
 
425
438
  // If loadUrlTimeoutValue
426
439
  int timeout = this.getIntegerProperty("loadUrlTimeoutValue", 0);
@@ -498,12 +511,7 @@ public class DroidGap extends Activity implements CordovaInterface {
498
511
  else {
499
512
  me.callbackServer.reinit(url);
500
513
  }
501
- if (me.pluginManager == null) {
502
- me.pluginManager = new PluginManager(me.appView, me);
503
- }
504
- else {
505
- me.pluginManager.reinit();
506
- }
514
+ me.pluginManager.init();
507
515
 
508
516
  // If loadingDialog property, then show the App loading dialog for first page of app
509
517
  String loading = null;
@@ -598,38 +606,12 @@ public class DroidGap extends Activity implements CordovaInterface {
598
606
  if (!url.startsWith("javascript:")) {
599
607
  LOG.d(TAG, "DroidGap.loadUrl(%s, %d)", url, time);
600
608
  }
601
- final DroidGap me = this;
602
-
603
- // Handle activity parameters
604
- this.runOnUiThread(new Runnable() {
605
- public void run() {
606
- if (me.appView == null) {
607
- me.init();
608
- }
609
- me.handleActivityParameters();
610
- }
611
- });
612
-
613
- Runnable runnable = new Runnable() {
614
- public void run() {
615
- try {
616
- synchronized(this) {
617
- this.wait(time);
618
- }
619
- } catch (InterruptedException e) {
620
- e.printStackTrace();
621
- }
622
- if (!me.cancelLoadUrl) {
623
- me.loadUrlIntoView(url);
624
- }
625
- else{
626
- me.cancelLoadUrl = false;
627
- LOG.d(TAG, "Aborting loadUrl(%s): Another URL was loaded before timer expired.", url);
628
- }
629
- }
630
- };
631
- Thread thread = new Thread(runnable);
632
- thread.start();
609
+
610
+ this.handleActivityParameters();
611
+ if (this.splashscreen != 0) {
612
+ this.showSplashScreen(time);
613
+ }
614
+ this.loadUrlIntoView(url);
633
615
  }
634
616
 
635
617
  /**
@@ -831,11 +813,13 @@ public class DroidGap extends Activity implements CordovaInterface {
831
813
  }
832
814
 
833
815
  // Send pause event to JavaScript
834
- this.appView.loadUrl("javascript:try{require('cordova/channel').onPause.fire();}catch(e){console.log('exception firing pause event from native');};");
816
+ this.appView.loadUrl("javascript:try{cordova.require('cordova/channel').onPause.fire();}catch(e){console.log('exception firing pause event from native');};");
835
817
 
836
818
  // Forward to plugins
837
- this.pluginManager.onPause(this.keepRunning);
838
-
819
+ if (this.pluginManager != null) {
820
+ this.pluginManager.onPause(this.keepRunning);
821
+ }
822
+
839
823
  // If app doesn't want to run in background
840
824
  if (!this.keepRunning) {
841
825
 
@@ -852,7 +836,9 @@ public class DroidGap extends Activity implements CordovaInterface {
852
836
  super.onNewIntent(intent);
853
837
 
854
838
  //Forward to plugins
855
- this.pluginManager.onNewIntent(intent);
839
+ if (this.pluginManager != null) {
840
+ this.pluginManager.onNewIntent(intent);
841
+ }
856
842
  }
857
843
 
858
844
  @Override
@@ -872,11 +858,13 @@ public class DroidGap extends Activity implements CordovaInterface {
872
858
  }
873
859
 
874
860
  // Send resume event to JavaScript
875
- this.appView.loadUrl("javascript:try{require('cordova/channel').onResume.fire();}catch(e){console.log('exception firing resume event from native');};");
861
+ this.appView.loadUrl("javascript:try{cordova.require('cordova/channel').onResume.fire();}catch(e){console.log('exception firing resume event from native');};");
876
862
 
877
863
  // Forward to plugins
878
- this.pluginManager.onResume(this.keepRunning || this.activityResultKeepRunning);
879
-
864
+ if (this.pluginManager != null) {
865
+ this.pluginManager.onResume(this.keepRunning || this.activityResultKeepRunning);
866
+ }
867
+
880
868
  // If app doesn't want to run in background
881
869
  if (!this.keepRunning || this.activityResultKeepRunning) {
882
870
 
@@ -902,7 +890,7 @@ public class DroidGap extends Activity implements CordovaInterface {
902
890
 
903
891
 
904
892
  // Send destroy event to JavaScript
905
- this.appView.loadUrl("javascript:try{require('cordova/channel').onDestroy.fire();}catch(e){console.log('exception firing destroy event from native');};");
893
+ this.appView.loadUrl("javascript:try{cordova.require('cordova/channel').onDestroy.fire();}catch(e){console.log('exception firing destroy event from native');};");
906
894
 
907
895
  // Load blank page so that JavaScript onunload is called
908
896
  this.appView.loadUrl("about:blank");
@@ -942,7 +930,9 @@ public class DroidGap extends Activity implements CordovaInterface {
942
930
  */
943
931
  @Deprecated
944
932
  public void addService(String serviceType, String className) {
945
- this.pluginManager.addService(serviceType, className);
933
+ if (this.pluginManager != null) {
934
+ this.pluginManager.addService(serviceType, className);
935
+ }
946
936
  }
947
937
 
948
938
  /**
@@ -952,7 +942,9 @@ public class DroidGap extends Activity implements CordovaInterface {
952
942
  * @param message
953
943
  */
954
944
  public void sendJavascript(String statement) {
955
- this.callbackServer.sendJavascript(statement);
945
+ //We need to check for the null case on the Kindle Fire beacuse it changes the width and height on load
946
+ if(this.callbackServer != null)
947
+ this.callbackServer.sendJavascript(statement);
956
948
  }
957
949
 
958
950
  /**
@@ -1052,51 +1044,46 @@ public class DroidGap extends Activity implements CordovaInterface {
1052
1044
  }
1053
1045
 
1054
1046
  /**
1055
- * Called when a key is pressed.
1047
+ * Called when a key is de-pressed. (Key UP)
1056
1048
  *
1057
1049
  * @param keyCode
1058
1050
  * @param event
1059
1051
  */
1060
1052
  @Override
1061
- public boolean onKeyDown(int keyCode, KeyEvent event) {
1053
+ public boolean onKeyUp(int keyCode, KeyEvent event) {
1062
1054
  if (this.appView == null) {
1063
- return super.onKeyDown(keyCode, event);
1055
+ return super.onKeyUp(keyCode, event);
1064
1056
  }
1065
1057
 
1066
1058
  // If back key
1067
1059
  if (keyCode == KeyEvent.KEYCODE_BACK) {
1068
-
1069
1060
  // If back key is bound, then send event to JavaScript
1070
1061
  if (this.bound) {
1071
- this.appView.loadUrl("javascript:require('cordova').fireDocumentEvent('backbutton');");
1062
+ this.appView.loadUrl("javascript:cordova.fireDocumentEvent('backbutton');");
1072
1063
  return true;
1073
- }
1074
-
1075
- // If not bound
1076
- else {
1077
-
1064
+ } else {
1065
+ // If not bound
1078
1066
  // Go to previous page in webview if it is possible to go back
1079
1067
  if (this.backHistory()) {
1080
1068
  return true;
1081
1069
  }
1082
-
1083
1070
  // If not, then invoke behavior of super class
1084
1071
  else {
1085
1072
  this.activityState = ACTIVITY_EXITING;
1086
- return super.onKeyDown(keyCode, event);
1073
+ return super.onKeyUp(keyCode, event);
1087
1074
  }
1088
1075
  }
1089
1076
  }
1090
1077
 
1091
1078
  // If menu key
1092
1079
  else if (keyCode == KeyEvent.KEYCODE_MENU) {
1093
- this.appView.loadUrl("javascript:require('cordova').fireDocumentEvent('menubutton');");
1094
- return super.onKeyDown(keyCode, event);
1080
+ this.appView.loadUrl("javascript:cordova.fireDocumentEvent('menubutton');");
1081
+ return super.onKeyUp(keyCode, event);
1095
1082
  }
1096
1083
 
1097
1084
  // If search key
1098
1085
  else if (keyCode == KeyEvent.KEYCODE_SEARCH) {
1099
- this.appView.loadUrl("javascript:require('cordova').fireDocumentEvent('searchbutton');");
1086
+ this.appView.loadUrl("javascript:cordova.fireDocumentEvent('searchbutton');");
1100
1087
  return true;
1101
1088
  }
1102
1089
 
@@ -1185,13 +1172,16 @@ public class DroidGap extends Activity implements CordovaInterface {
1185
1172
  }
1186
1173
  });
1187
1174
  }
1188
-
1189
1175
  // If not, then display error dialog
1190
1176
  else {
1177
+ final boolean exit = !(errorCode == WebViewClient.ERROR_HOST_LOOKUP);
1191
1178
  me.runOnUiThread(new Runnable() {
1192
1179
  public void run() {
1193
- me.appView.setVisibility(View.GONE);
1194
- me.displayError("Application Error", description + " ("+failingUrl+")", "OK", true);
1180
+ if(exit)
1181
+ {
1182
+ me.appView.setVisibility(View.GONE);
1183
+ me.displayError("Application Error", description + " ("+failingUrl+")", "OK", exit);
1184
+ }
1195
1185
  }
1196
1186
  });
1197
1187
  }
@@ -1328,7 +1318,7 @@ public class DroidGap extends Activity implements CordovaInterface {
1328
1318
  * @param url
1329
1319
  * @return
1330
1320
  */
1331
- boolean isUrlWhiteListed(String url) {
1321
+ public boolean isUrlWhiteListed(String url) {
1332
1322
 
1333
1323
  // Check to see if we have matched url previously
1334
1324
  if (whiteListCache.get(url) != null) {
@@ -1414,4 +1404,47 @@ public class DroidGap extends Activity implements CordovaInterface {
1414
1404
  return this.bound;
1415
1405
  }
1416
1406
 
1407
+ protected Dialog splashDialog;
1408
+
1409
+ /**
1410
+ * Removes the Dialog that displays the splash screen
1411
+ */
1412
+ public void removeSplashScreen() {
1413
+ if (splashDialog != null) {
1414
+ splashDialog.dismiss();
1415
+ splashDialog = null;
1416
+ }
1417
+ }
1418
+
1419
+ /**
1420
+ * Shows the splash screen over the full Activity
1421
+ */
1422
+ protected void showSplashScreen(int time) {
1423
+ // Get reference to display
1424
+ Display display = getWindowManager().getDefaultDisplay();
1425
+
1426
+ // Create the layout for the dialog
1427
+ LinearLayout root = new LinearLayout(this);
1428
+ root.setMinimumHeight(display.getHeight());
1429
+ root.setMinimumWidth(display.getWidth());
1430
+ root.setOrientation(LinearLayout.VERTICAL);
1431
+ root.setBackgroundColor(this.getIntegerProperty("backgroundColor", Color.BLACK));
1432
+ root.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
1433
+ ViewGroup.LayoutParams.FILL_PARENT, 0.0F));
1434
+ root.setBackgroundResource(this.splashscreen);
1435
+
1436
+ // Create and show the dialog
1437
+ splashDialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar);
1438
+ splashDialog.setContentView(root);
1439
+ splashDialog.setCancelable(false);
1440
+ splashDialog.show();
1441
+
1442
+ // Set Runnable to remove splash screen just in case
1443
+ final Handler handler = new Handler();
1444
+ handler.postDelayed(new Runnable() {
1445
+ public void run() {
1446
+ removeSplashScreen();
1447
+ }
1448
+ }, time);
1449
+ }
1417
1450
  }