diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java index eff50a55..24fedd20 100755 --- a/framework/src/org/apache/cordova/DroidGap.java +++ b/framework/src/org/apache/cordova/DroidGap.java @@ -48,6 +48,7 @@ import android.graphics.Color; import android.media.AudioManager; import android.net.Uri; import android.os.Bundle; +import android.util.Log; import android.view.Display; import android.view.KeyEvent; import android.view.Menu; @@ -917,8 +918,33 @@ public class DroidGap extends Activity implements CordovaInterface { this.finish(); } + + /** + * Called when the back key is pressed + * + * (non-Javadoc) + * @see android.app.Activity#onBackPressed() + */ + /* + @Override + public void onBackPressed() + { + Log.d("BackPressed", "in onBackPressed"); + Log.d("BackPressed", "bound = " + this.bound); + //Log.d("BackPressed", "backHistory = " + this.backHistory()); + // If back key is bound, then send event to JavaScript + + if (!(this.bound || this.backHistory())) { + Log.d("BackPressed", "exiting"); + this.activityState = ACTIVITY_EXITING; + super.onBackPressed(); + } + } + */ + + /** - * Called when a key is pressed. + * Called when a key is de-pressed. (Key UP) * * @param keyCode * @param event @@ -931,21 +957,19 @@ public class DroidGap extends Activity implements CordovaInterface { // If back key if (keyCode == KeyEvent.KEYCODE_BACK) { + Log.d("BackButton", "I got an up from KEYCODE_BACK"); // If back key is bound, then send event to JavaScript if (this.bound) { + Log.d("BackButton", "bound is true firing an event to JS"); this.appView.loadUrl("javascript:cordova.fireDocumentEvent('backbutton');"); return true; - } - - // If not bound - else { - + } else { + // If not bound // Go to previous page in webview if it is possible to go back if (this.backHistory()) { return true; } - // If not, then invoke behavior of super class else { this.activityState = ACTIVITY_EXITING; @@ -966,6 +990,7 @@ public class DroidGap extends Activity implements CordovaInterface { return true; } + Log.d("BackPressed", "returning false"); return false; } diff --git a/framework/src/org/apache/cordova/FileTransfer.java b/framework/src/org/apache/cordova/FileTransfer.java index 059d0848..6eee05ac 100644 --- a/framework/src/org/apache/cordova/FileTransfer.java +++ b/framework/src/org/apache/cordova/FileTransfer.java @@ -410,7 +410,7 @@ public class FileTransfer extends Plugin { */ public JSONObject download(String source, String target) throws IOException { try { - File file = new File(target); + File file = getFileFromPath(target); // create needed directories file.getParentFile().mkdirs(); @@ -421,6 +421,14 @@ public class FileTransfer extends Plugin { URL url = new URL(source); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); + + //Add cookie support + String cookie = CookieManager.getInstance().getCookie(source); + if(cookie != null) + { + connection.setRequestProperty("cookie", cookie); + } + connection.connect(); Log.d(LOG_TAG, "Download file:" + url); @@ -480,4 +488,17 @@ public class FileTransfer extends Plugin { } } + /** + * Get a File object from the passed in path + * + * @param path + * @return + */ + private File getFileFromPath(String path) { + if (path.startsWith("file://")) { + return new File(path.substring(7)); + } else { + return new File(path); + } + } } diff --git a/framework/src/org/apache/cordova/NetworkManager.java b/framework/src/org/apache/cordova/NetworkManager.java index d54b5066..61e64598 100755 --- a/framework/src/org/apache/cordova/NetworkManager.java +++ b/framework/src/org/apache/cordova/NetworkManager.java @@ -89,7 +89,7 @@ public class NetworkManager extends Plugin { */ public void setContext(Context ctx) { super.setContext(ctx); - this.sockMan = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE); + this.sockMan = (ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE); this.connectionCallbackId = null; // We need to listen to connectivity events to update navigator.connection @@ -98,7 +98,7 @@ public class NetworkManager extends Plugin { if (this.receiver == null) { this.receiver = new BroadcastReceiver() { @Override - public void onReceive(Context context, Intent intent) { + public void onReceive(Context context, Intent intent) { updateConnectionInfo((NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO)); } }; @@ -117,13 +117,12 @@ public class NetworkManager extends Plugin { */ public PluginResult execute(String action, JSONArray args, String callbackId) { PluginResult.Status status = PluginResult.Status.INVALID_ACTION; - String result = "Unsupported Operation: " + action; + String result = "Unsupported Operation: " + action; if (action.equals("getConnectionInfo")) { this.connectionCallbackId = callbackId; NetworkInfo info = sockMan.getActiveNetworkInfo(); PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, this.getConnectionInfo(info)); - pluginResult.setKeepCallback(true); return pluginResult; } @@ -137,8 +136,7 @@ public class NetworkManager extends Plugin { * @return T=returns value */ public boolean isSynch(String action) { - // All methods take a while, so always use async - return false; + return true; } /** @@ -182,7 +180,7 @@ public class NetworkManager extends Plugin { // If we are not connected to any network set type to none if (!info.isConnected()) { type = TYPE_NONE; - } + } else { type = getType(info); } @@ -197,7 +195,6 @@ public class NetworkManager extends Plugin { */ private void sendUpdate(String type) { PluginResult result = new PluginResult(PluginResult.Status.OK, type); - result.setKeepCallback(true); this.success(result, this.connectionCallbackId); // Send to all plugins @@ -212,7 +209,7 @@ public class NetworkManager extends Plugin { */ private String getType(NetworkInfo info) { if (info != null) { - String type = info.getTypeName(); + String type = info.getTypeName(); if (type.toLowerCase().equals(WIFI)) { return TYPE_WIFI;