mirror of
				https://github.com/nerzhul/ownCloud-SMS-App.git
				synced 2025-10-30 18:07:51 +00:00 
			
		
		
		
	Add a new preference to select on which network synchronize
This commit is contained in:
		
							parent
							
								
									b8506fffd1
								
							
						
					
					
						commit
						810567c237
					
				| @ -28,7 +28,7 @@ | ||||
| <resources> | ||||
| 
 | ||||
|     <!-- Translation version, reference for translators --> | ||||
|     <string name="translation_version">5</string> | ||||
|     <string name="translation_version">6</string> | ||||
| 
 | ||||
|     <!-- System strings, do not translate --> | ||||
|     <string name="app_name">ownCloud-SMS</string> | ||||
| @ -96,6 +96,13 @@ | ||||
|         <item>-1</item> | ||||
|     </string-array> | ||||
|      | ||||
|     <string name="pref_sync_wifi">Synchronize in Wi-Fi</string> | ||||
|     <string name="pref_sync_4g">Synchronize in 4G</string> | ||||
|     <string name="pref_sync_3g">Synchronize in 3G</string> | ||||
|     <string name="pref_sync_gprs">Synchronize in 2.5G (GPRS)</string> | ||||
|     <string name="pref_sync_2g">Synchronize in 2G</string> | ||||
|     <string name="pref_sync_others">Synchronize in other modes</string> | ||||
| 
 | ||||
|     <string name="title_activity_login">Sign in</string> | ||||
| 
 | ||||
|     <!-- Login --> | ||||
|  | ||||
| @ -2,12 +2,49 @@ | ||||
|     <PreferenceCategory | ||||
|         android:title="@string/summary_global_pref_to_general_prefs"> | ||||
|     <ListPreference | ||||
|         android:defaultValue="10" | ||||
|         android:defaultValue="15" | ||||
|         android:entries="@array/pref_sync_frequency_titles" | ||||
|         android:entryValues="@array/pref_sync_frequency_values" | ||||
|         android:key="sync_frequency" | ||||
|         android:negativeButtonText="@null" | ||||
|         android:positiveButtonText="@null" | ||||
|         android:title="@string/pref_title_sync_frequency" /> | ||||
|     <CheckBoxPreference android:id="@+id/checkbox_sync_wifi" | ||||
|         android:defaultValue="true" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:key="sync_wifi" | ||||
|         android:title="@string/pref_sync_wifi" /> | ||||
|     <CheckBoxPreference android:id="@+id/checkbox_sync_4g" | ||||
|         android:defaultValue="true" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:key="sync_4g" | ||||
|         android:title="@string/pref_sync_4g" /> | ||||
|     <CheckBoxPreference android:id="@+id/checkbox_sync_3g" | ||||
|         android:defaultValue="true" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:key="sync_3g" | ||||
|         android:title="@string/pref_sync_3g" /> | ||||
|     <CheckBoxPreference android:id="@+id/checkbox_sync_2g" | ||||
|         android:defaultValue="true" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:key="sync_2g" | ||||
|         android:title="@string/pref_sync_2g" /> | ||||
|     <CheckBoxPreference android:id="@+id/checkbox_sync_gprs" | ||||
|         android:defaultValue="true" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:key="sync_gprs" | ||||
|         android:title="@string/pref_sync_gprs" /> | ||||
|     <CheckBoxPreference android:id="@+id/checkbox_sync_others" | ||||
|         android:defaultValue="true" | ||||
|         android:layout_width="wrap_content" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:key="sync_others" | ||||
|         android:title="@string/pref_sync_others" /> | ||||
|      | ||||
| 	</PreferenceCategory> | ||||
| </PreferenceScreen> | ||||
|  | ||||
| @ -23,6 +23,8 @@ import android.annotation.TargetApi; | ||||
| import android.content.ContentResolver; | ||||
| import android.content.Context; | ||||
| import android.content.PeriodicSync; | ||||
| import android.content.SharedPreferences; | ||||
| import android.content.SharedPreferences.Editor; | ||||
| import android.content.res.Configuration; | ||||
| import android.os.Build; | ||||
| import android.os.Bundle; | ||||
| @ -31,12 +33,14 @@ import android.preference.Preference; | ||||
| import android.preference.PreferenceActivity; | ||||
| import android.preference.PreferenceFragment; | ||||
| import android.preference.PreferenceManager; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import fr.unix_experience.owncloud_sms.R; | ||||
| 
 | ||||
| public class GeneralSettingsActivity extends PreferenceActivity { | ||||
| 	private static final boolean ALWAYS_SIMPLE_PREFS = false; | ||||
| 	private static Context mContext; | ||||
| 	static AccountManager mAccountMgr; | ||||
| 	static String mAccountAuthority; | ||||
| 	static String mSlowSyncAccountAuthority; | ||||
| @ -67,6 +71,8 @@ public class GeneralSettingsActivity extends PreferenceActivity { | ||||
| 		// use the older PreferenceActivity APIs. | ||||
| 		addPreferencesFromResource(R.xml.pref_data_sync); | ||||
| 		 | ||||
| 		mContext = getBaseContext(); | ||||
| 
 | ||||
| 		// Bind the summaries of EditText/List/Dialog/Ringtone preferences to | ||||
| 		// their values. When their values change, their summaries are updated | ||||
| 		// to reflect the new value, per the Android Design guidelines. | ||||
| @ -124,12 +130,13 @@ public class GeneralSettingsActivity extends PreferenceActivity { | ||||
| 				 | ||||
| 				String prefKey = preference.getKey(); | ||||
| 				 | ||||
| 				Account[] myAccountList = mAccountMgr.getAccountsByType(mAccountType); | ||||
| 				 | ||||
| 				// Handle sync frequency change | ||||
| 				if (prefKey.equals(new String("sync_frequency"))) { | ||||
| 					long syncFreq = Long.parseLong((String)value); | ||||
| 				if (prefKey.equals("sync_frequency")) { | ||||
| 					long syncFreq = Long.parseLong(stringValue); | ||||
| 
 | ||||
| 					// Get ownCloud SMS account list | ||||
| 					Account[] myAccountList = mAccountMgr.getAccountsByType(mAccountType); | ||||
| 					for (int i = 0; i < myAccountList.length; i++) { | ||||
| 						// And get all authorities for this account | ||||
| 						List<PeriodicSync> syncList = ContentResolver.getPeriodicSyncs(myAccountList[i], mAccountAuthority); | ||||
| @ -153,8 +160,19 @@ public class GeneralSettingsActivity extends PreferenceActivity { | ||||
| 				                mAccountAuthority, b, syncFreq * 60); | ||||
| 						} | ||||
| 					} | ||||
| 				} | ||||
| 				// Network types allowed for sync | ||||
| 				else if(prefKey.equals("sync_wifi") || prefKey.equals("sync_2g") || | ||||
| 					prefKey.equals("sync_3g") || prefKey.equals("sync_gprs") || | ||||
| 					prefKey.equals("sync_4g") || prefKey.equals("sync_others")) { | ||||
| 					SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); | ||||
| 
 | ||||
| 					Editor edit = prefs.edit(); | ||||
| 					edit.putBoolean(prefKey, Boolean.parseBoolean(stringValue)); | ||||
| 					edit.commit(); | ||||
| 				} | ||||
| 				// Slow Sync frequency  | ||||
| 				} /*else if (prefKey.equals(new String("slow_sync_frequency"))) { | ||||
| 				/*else if (prefKey.equals(new String("slow_sync_frequency"))) { | ||||
| 					long syncFreq = Long.parseLong((String)value); | ||||
| 
 | ||||
| 					// Get ownCloud SMS account list | ||||
|  | ||||
| @ -46,6 +46,7 @@ import com.owncloud.android.lib.common.OwnCloudCredentialsFactory; | ||||
| 
 | ||||
| import fr.unix_experience.owncloud_sms.R; | ||||
| import fr.unix_experience.owncloud_sms.authenticators.OwnCloudAuthenticator; | ||||
| import fr.unix_experience.owncloud_sms.defines.DefaultPrefs; | ||||
| import fr.unix_experience.owncloud_sms.enums.LoginReturnCode; | ||||
| 
 | ||||
| /** | ||||
| @ -282,7 +283,7 @@ public class LoginActivity extends Activity { | ||||
| 				Bundle b = new Bundle(); | ||||
| 				b.putInt("synctype", 1); | ||||
| 				 | ||||
| 				ContentResolver.addPeriodicSync(account, getString(R.string.account_authority), b, 15 * 60); | ||||
| 				ContentResolver.addPeriodicSync(account, getString(R.string.account_authority), b, DefaultPrefs.syncInterval * 60); | ||||
| 				// Then it's finished | ||||
| 				finish(); | ||||
| 				 | ||||
|  | ||||
| @ -33,11 +33,13 @@ public class ConnectivityChanged extends BroadcastReceiver implements ASyncTask | ||||
| 	@Override | ||||
| 	public void onReceive(Context context, Intent intent) { | ||||
| 		ConnectivityMonitor cMon = new ConnectivityMonitor(context); | ||||
| 		 | ||||
| 		Log.d(TAG, "test"); | ||||
| 		// If data is available and previous dataConnectionState was false, then we need to sync | ||||
| 		if (cMon.isValid() && dataConnectionAvailable == false) { | ||||
| 			dataConnectionAvailable = true; | ||||
| 			Log.d(TAG,"ConnectivityChanged.onReceive, data conn available"); | ||||
| 			checkMessagesToSent(context); | ||||
| 			checkMessagesToSend(context); | ||||
| 		} | ||||
| 		// No data available and previous dataConnectionState was true | ||||
| 		else if (dataConnectionAvailable == true && !cMon.isValid()) { | ||||
| @ -46,7 +48,7 @@ public class ConnectivityChanged extends BroadcastReceiver implements ASyncTask | ||||
| 		} | ||||
| 	} | ||||
| 	 | ||||
| 	private void checkMessagesToSent(Context context) { | ||||
| 	private void checkMessagesToSend(Context context) { | ||||
| 		// Get last message synced from preferences | ||||
| 		Long lastMessageSynced = (new OCSMSSharedPrefs(context)).getLastMessageDate(); | ||||
| 		Log.d(TAG,"Synced Last:" + lastMessageSynced); | ||||
|  | ||||
| @ -0,0 +1,11 @@ | ||||
| package fr.unix_experience.owncloud_sms.defines; | ||||
| 
 | ||||
| public class DefaultPrefs { | ||||
| 	public final static Integer syncInterval = 15; | ||||
| 	public final static Boolean syncWifi = true; | ||||
| 	public final static Boolean sync2G = true; | ||||
| 	public final static Boolean syncGPRS = true;  | ||||
| 	public final static Boolean sync3G = true; | ||||
| 	public final static Boolean sync4G = true; | ||||
| 	public final static Boolean syncOthers = true; | ||||
| } | ||||
| @ -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) { | ||||
| @ -34,7 +39,42 @@ public class ConnectivityMonitor { | ||||
| 		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; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user