mobile_template 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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
  }