FPII-1910: Fairphone Updater should check for updates on both mobile data and Wi-Fi

Check for updates on mobile data.

Change-Id: I16c82761688e2acbaf439dac52213af45d942c44
diff --git a/res/drawable-xxhdpi/ic_import_export_fpblue_24dp.png b/res/drawable-xxhdpi/ic_import_export_fpblue_24dp.png
new file mode 100644
index 0000000..7f34bae
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_import_export_fpblue_24dp.png
Binary files differ
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index d3f4d54..72c102f 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -77,5 +77,6 @@
     <string name="got_it">Ich verstehe</string>
     <string name="connect_to_wifi">Stell eine Verbindung zum WLAN her</string>
     <string name="charge_battery">Bitte lade die Batterie mindestens 80% auf</string>
+    <string name="connect_to_internet">Stelle sicher, dass eine Internetverbindung besteht</string>
 
 </resources>
\ No newline at end of file
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index f5f897f..6da783f 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -77,5 +77,6 @@
     <string name="got_it">Lo entiendo</string>
     <string name="connect_to_wifi">Conéctate a la red Wi-Fi</string>
     <string name="charge_battery">Asegúrate de que tu batería está cargada al menos un 80%</string>
+    <string name="connect_to_internet">Asegúrate de que tienes conexión a internet</string>
 
 </resources>
\ No newline at end of file
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index f0f8777..6e73124 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -77,5 +77,7 @@
     <string name="got_it">OK</string>
     <string name="connect_to_wifi">Merci de vous connecter à un réseau Wi-Fi</string>
     <string name="charge_battery">Chargez votre batterie à au moins 80%</string>
+    <string name="config_zip" translatable="false"></string>
+    <string name="connect_to_internet">Assurez-vous d\'être connecté à internet</string>
 
 </resources>
\ No newline at end of file
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 07c3abe..1078619 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -77,5 +77,6 @@
     <string name="got_it">Ik snap het</string>
     <string name="connect_to_wifi">Maak verbinding met een Wi-Fi netwerk</string>
     <string name="charge_battery">Zorg er voor dat je batterij minstens 80% opgeladen is</string>
+    <string name="connect_to_internet">Zorg ervoor dat je bent verbonden met het internet</string>
 
 </resources>
\ No newline at end of file
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 4a033bb..6cf3f91 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -77,5 +77,6 @@
     <string name="got_it">Entendi</string>
     <string name="connect_to_wifi">Por favor ligue-se a uma rede Wi-Fi</string>
     <string name="charge_battery">Por favor carregue a bateria até pelo menos 80%</string>
+    <string name="connect_to_internet">Certifique-se que está ligado à internet</string>
 
 </resources>
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index d5cfabd..47877ab 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -79,4 +79,6 @@
     <string name="charge_battery">Please charge your battery to at least 80%</string>
     <string name="got_it">Got it</string>
     <string name="beta_mode">beta mode</string>
+    <string name="connect_to_internet">Make sure you\'re connected to the internet</string>
+
 </resources>
\ No newline at end of file
diff --git a/src/com/fairphone/updater/FairphoneUpdater.java b/src/com/fairphone/updater/FairphoneUpdater.java
index d9605ea..d932d79 100644
--- a/src/com/fairphone/updater/FairphoneUpdater.java
+++ b/src/com/fairphone/updater/FairphoneUpdater.java
@@ -73,7 +73,7 @@
     
     private static final String TAG_FIRST_FRAGMENT = "FIRST_FRAGMENT";
     private String mZipPath;
-	private AlertDialog wifiOffDialog;
+    private AlertDialog internetOffDialog;
 
 
 	public static enum UpdaterState
@@ -831,9 +831,9 @@
 	@Override
 	protected void onPause() {
 		super.onPause();
-		if(wifiOffDialog != null) {
-			wifiOffDialog.cancel();
-			wifiOffDialog = null;
+		if(internetOffDialog != null) {
+            internetOffDialog.cancel();
+            internetOffDialog = null;
 		}
 	}
 
@@ -866,29 +866,29 @@
         
         changeFragment(getFragmentFromState());
 
-	    // Show wifi disable dialog if in a blank state and no wifi is available
-	    if (    wifiOffDialog == null &&
-			    mCurrentState == UpdaterState.NORMAL &&
-			    !Utils.isWiFiEnabled(this) &&
-			    UpdaterData.getInstance().isAppStoreListEmpty() &&
+        // Show internet disable dialog if in a blank state and no internet is available
+        if(     internetOffDialog == null &&
+                mCurrentState == UpdaterState.NORMAL &&
+                !Utils.isInternetEnabled(this) &&
+                UpdaterData.getInstance().isAppStoreListEmpty() &&
 			    !UpdaterData.getInstance().isAOSPVersionListNotEmpty() &&
-			    !UpdaterData.getInstance().isFairphoneVersionListNotEmpty() )
-	    {
-		    Resources resources = getResources();
+			    !UpdaterData.getInstance().isFairphoneVersionListNotEmpty())
+        {
+            Resources resources = getResources();
 
-		    AlertDialog.Builder wifiOffDialogBuilder = new AlertDialog.Builder(this);
+            AlertDialog.Builder internetOffDialogBuilder = new AlertDialog.Builder(this);
 
-		    wifiOffDialogBuilder.setTitle(resources.getString(R.string.connect_to_wifi));
-            wifiOffDialogBuilder.setIcon(resources.getDrawable(R.drawable.ic_signal_wifi_4_bar_fpblue_24dp));
+            internetOffDialogBuilder.setTitle(R.string.connect_to_internet);
+            internetOffDialogBuilder.setIcon(resources.getDrawable(R.drawable.ic_import_export_fpblue_24dp));
 
-		    wifiOffDialogBuilder.setPositiveButton(resources.getString(R.string.got_it), new DialogInterface.OnClickListener() {
+            internetOffDialogBuilder.setPositiveButton(resources.getString(R.string.got_it), new DialogInterface.OnClickListener() {
 			    public void onClick(DialogInterface dialog, int id) {
 				    // do nothing, since the state is still the same
 			    }
 		    });
-		    wifiOffDialog = wifiOffDialogBuilder.create();
-		    wifiOffDialog.show();
-	    }
+            internetOffDialog = internetOffDialogBuilder.create();
+            internetOffDialog.show();
+        }
     }
 
     public Fragment startGappsInstall()
diff --git a/src/com/fairphone/updater/UpdaterService.java b/src/com/fairphone/updater/UpdaterService.java
index f10a964..3c88232 100644
--- a/src/com/fairphone/updater/UpdaterService.java
+++ b/src/com/fairphone/updater/UpdaterService.java
@@ -107,7 +107,7 @@
 
         setupConnectivityMonitoring();
 
-        if (Utils.isWiFiEnabled(getApplicationContext()))
+        if(Utils.isInternetEnabled(getApplicationContext()))
         {
             downloadConfigFile(intent != null && intent.getBooleanExtra(EXTRA_FORCE_CONFIG_FILE_DOWNLOAD, false));
         }
@@ -246,6 +246,9 @@
 
         if (request != null && mDownloadManager != null)
         {
+            // Allow download over mobile data and Wi-Fi
+            request.setAllowedNetworkTypes(Request.NETWORK_MOBILE|Request.NETWORK_WIFI);
+
             //Guarantee that only we have only one download
             long oldDownloadId = mSharedPreferences.getLong(PREFERENCE_LAST_CONFIG_DOWNLOAD_ID, 0);
             if(oldDownloadId != 0){
@@ -403,7 +406,7 @@
 
         if (networkStateReceiver == null) {
             // Check current connectivity status
-            mInternetConnectionAvailable = Utils.isWiFiEnabled(getApplicationContext());
+            mInternetConnectionAvailable = Utils.isInternetEnabled(getApplicationContext());
 
             // Setup monitoring for future connectivity status changes
             networkStateReceiver = new BroadcastReceiver()
@@ -429,7 +432,7 @@
                     else
                     {
                         int conn_type = intent.getIntExtra(ConnectivityManager.EXTRA_NETWORK_TYPE, ConnectivityManager.TYPE_DUMMY);
-                        if( conn_type == ConnectivityManager.TYPE_WIFI ) {
+                        if( conn_type == ConnectivityManager.TYPE_WIFI || conn_type == ConnectivityManager.TYPE_MOBILE) {
                             Log.i(TAG, "Network connectivity potentially available.");
                             if (!mInternetConnectionAvailable) {
                                 downloadConfigFile(false);
diff --git a/src/com/fairphone/updater/tools/Utils.java b/src/com/fairphone/updater/tools/Utils.java
index 706f315..c8b3930 100644
--- a/src/com/fairphone/updater/tools/Utils.java
+++ b/src/com/fairphone/updater/tools/Utils.java
@@ -27,6 +27,7 @@
 import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.net.Uri;
 import android.os.BatteryManager;
 import android.os.Build;
@@ -649,6 +650,13 @@
         return filePath;
     }
 
+    public static boolean isInternetEnabled(Context context) {
+        ConnectivityManager manager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        NetworkInfo activeNetwork = manager.getActiveNetworkInfo();
+        boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
+        return isConnected;
+    }
+
 	public static boolean isWiFiEnabled(Context context)
 	{