1
0
mirror of https://github.com/nerzhul/ownCloud-SMS-App.git synced 2026-08-23 22:32:59 +00:00

Add a new preference to select on which network synchronize

This commit is contained in:
Loic Blot
2015-03-21 21:51:10 +01:00
parent b8506fffd1
commit 810567c237
7 changed files with 127 additions and 11 deletions
@@ -16,8 +16,13 @@ package fr.unix_experience.owncloud_sms.engine;
* You should have received a copy of the GNU Affero General Public License
*/
import fr.unix_experience.owncloud_sms.defines.DefaultPrefs;
import android.content.Context;
import android.content.SharedPreferences;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.preference.PreferenceManager;
import android.telephony.TelephonyManager;
public class ConnectivityMonitor {
public ConnectivityMonitor(Context context) {
@@ -28,13 +33,48 @@ public class ConnectivityMonitor {
public boolean isValid() {
if (_cMgr == null) {
_cMgr = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
}
final android.net.NetworkInfo niWiFi = _cMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
final android.net.NetworkInfo niMobile = _cMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (niWiFi.isAvailable() || niMobile.isAvailable()) {
return true;
// Load the connectivity manager to determine on which network we are connected
NetworkInfo netInfo = _cMgr.getActiveNetworkInfo();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(_context);
// Check
switch (netInfo.getType()) {
case ConnectivityManager.TYPE_WIFI:
return prefs.getBoolean("sync_wifi", DefaultPrefs.syncWifi);
case ConnectivityManager.TYPE_MOBILE:
switch (netInfo.getSubtype()) {
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
return prefs.getBoolean("sync_2g", DefaultPrefs.sync2G);
case TelephonyManager.NETWORK_TYPE_GPRS:
return prefs.getBoolean("sync_gprs", DefaultPrefs.syncGPRS);
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_HSPAP:
return prefs.getBoolean("sync_3g", DefaultPrefs.sync3G);
case TelephonyManager.NETWORK_TYPE_LTE:
return prefs.getBoolean("sync_4g", DefaultPrefs.sync3G);
default:
return prefs.getBoolean("sync_others", DefaultPrefs.syncOthers);
}
default:
return prefs.getBoolean("sync_others", DefaultPrefs.syncOthers);
}
}
return false;