diff --git a/res/values/strings.xml b/res/values/strings.xml
index 162bc1d72c..560f1d1ff7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -194,4 +194,6 @@
The certificate could not be saved
This is a placeholder
+
+ Upload pictures via WiFi only
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 67a7d9661c..f3c49525da 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -13,6 +13,7 @@
+
diff --git a/src/com/owncloud/android/files/PhotoTakenBroadcastReceiver.java b/src/com/owncloud/android/files/PhotoTakenBroadcastReceiver.java
index 8372e779e8..d39baa991c 100644
--- a/src/com/owncloud/android/files/PhotoTakenBroadcastReceiver.java
+++ b/src/com/owncloud/android/files/PhotoTakenBroadcastReceiver.java
@@ -31,6 +31,7 @@ import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.net.ConnectivityManager;
+import android.net.NetworkInfo.State;
import android.preference.PreferenceManager;
import android.provider.MediaStore.Images.Media;
import android.util.Log;
@@ -45,10 +46,13 @@ public class PhotoTakenBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- if (!PreferenceManager.getDefaultSharedPreferences(context).getBoolean("instant_uploading", false)) {
+ boolean iu_enabled = PreferenceManager.getDefaultSharedPreferences(context).getBoolean("instant_uploading", false);
+
+ if (!iu_enabled) {
Log.d(TAG, "Instant upload disabled, abording uploading");
return;
}
+
if (intent.getAction().equals(android.net.ConnectivityManager.CONNECTIVITY_ACTION)) {
handleConnectivityAction(context, intent);
} else if (intent.getAction().equals(NEW_PHOTO_ACTION)) {
@@ -71,6 +75,17 @@ public class PhotoTakenBroadcastReceiver extends BroadcastReceiver {
Log.e(TAG, "Couldn't resolve given uri!");
return;
}
+
+ boolean iu_via_wifi = PreferenceManager.getDefaultSharedPreferences(context).getBoolean("instant_upload_on_wifi", false);
+ boolean is_conn_via_wifi = false;
+ if (iu_via_wifi) {
+ ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (cm != null && cm.getActiveNetworkInfo() != null &&
+ cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI &&
+ cm.getActiveNetworkInfo().getState() == State.CONNECTED)
+ is_conn_via_wifi = true;
+ }
+
String file_path = c.getString(c.getColumnIndex(Media.DATA));
String file_name = c.getString(c.getColumnIndex(Media.DISPLAY_NAME));
@@ -79,7 +94,7 @@ public class PhotoTakenBroadcastReceiver extends BroadcastReceiver {
c.close();
- if (!isOnline(context)) {
+ if (!isOnline(context) || (iu_via_wifi && !is_conn_via_wifi)) {
DbHandler db = new DbHandler(context);
db.putFileForLater(file_path, account.name);
db.close();