diff --git a/build.gradle b/build.gradle index 7e5df02..91517bd 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:2.2.0' + classpath 'com.android.tools.build:gradle:2.2.1' } } diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/OCSMSSettingsActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/OCSMSSettingsActivity.java index 7ada44d..fa0d217 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/activities/OCSMSSettingsActivity.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/OCSMSSettingsActivity.java @@ -17,6 +17,7 @@ package fr.unix_experience.owncloud_sms.activities; * along with this program. If not, see . */ +import android.Manifest; import android.accounts.Account; import android.accounts.AccountManager; import android.content.ContentResolver; @@ -27,26 +28,29 @@ import android.util.Log; import java.util.List; -import fr.unix_experience.owncloud_sms.activities.virtual.VirtualSettingsActivity; import fr.unix_experience.owncloud_sms.R; +import fr.unix_experience.owncloud_sms.activities.virtual.VirtualSettingsActivity; import fr.unix_experience.owncloud_sms.defines.DefaultPrefs; import fr.unix_experience.owncloud_sms.prefs.OCSMSSharedPrefs; +import fr.unix_experience.owncloud_sms.prefs.PermissionChecker; + +import static fr.unix_experience.owncloud_sms.enums.PermissionID.REQUEST_ACCOUNTS; public class OCSMSSettingsActivity extends VirtualSettingsActivity { - private static final String TAG = OCSMSSettingsActivity.class.getSimpleName(); + private static final String TAG = OCSMSSettingsActivity.class.getSimpleName(); - private static AccountManager _accountMgr; - private static String _accountAuthority; - private static String _accountType; + private static AccountManager _accountMgr; + private static String _accountAuthority; + private static String _accountType; - @Override - protected void onPostCreate(Bundle savedInstanceState) { + @Override + protected void onPostCreate(Bundle savedInstanceState) { OCSMSSettingsActivity._accountMgr = AccountManager.get(getBaseContext()); OCSMSSettingsActivity._accountAuthority = getString(R.string.account_authority); OCSMSSettingsActivity._accountType = getString(R.string.account_type); VirtualSettingsActivity._prefsRessourceFile = R.xml.pref_data_sync; - // Bind our boolean preferences + // Bind our boolean preferences VirtualSettingsActivity._boolPrefs.add(new BindObjectPref("push_on_receive", DefaultPrefs.pushOnReceive)); VirtualSettingsActivity._boolPrefs.add(new BindObjectPref("sync_wifi", DefaultPrefs.syncWifi)); VirtualSettingsActivity._boolPrefs.add(new BindObjectPref("sync_4g", DefaultPrefs.sync4G)); @@ -55,46 +59,52 @@ public class OCSMSSettingsActivity extends VirtualSettingsActivity { VirtualSettingsActivity._boolPrefs.add(new BindObjectPref("sync_2g", DefaultPrefs.sync2G)); VirtualSettingsActivity._boolPrefs.add(new BindObjectPref("sync_others", DefaultPrefs.syncOthers)); - // Bind our string preferences + // Bind our string preferences VirtualSettingsActivity._stringPrefs.add(new BindObjectPref("sync_frequency", "15")); VirtualSettingsActivity._stringPrefs.add(new BindObjectPref("sync_bulk_messages", "-1")); + //VirtualSettingsActivity._stringPrefs.add(new BindObjectPref("minimum_sync_chars", "0")); - // Must be at the end, after preference bind - super.onPostCreate(savedInstanceState); - } + // Must be at the end, after preference bind + super.onPostCreate(savedInstanceState); + } - protected void handleCheckboxPreference(String key, Boolean value) { - // Network types allowed for sync - if("push_on_receive".equals(key) || + protected void handleCheckboxPreference(String key, Boolean value) { + // Network types allowed for sync + if ("push_on_receive".equals(key) || "sync_wifi".equals(key) || "sync_2g".equals(key) || "sync_3g".equals(key) || "sync_gprs".equals(key) || "sync_4g".equals(key) || "sync_others".equals(key)) { - OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(VirtualSettingsActivity._context); - Log.i(OCSMSSettingsActivity.TAG,"OCSMSSettingsActivity.handleCheckboxPreference: set " + key + " to " - + value.toString()); - prefs.putBoolean(key, value); - } - } + OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(VirtualSettingsActivity._context); + Log.i(OCSMSSettingsActivity.TAG, "OCSMSSettingsActivity.handleCheckboxPreference: set " + key + " to " + + value.toString()); + prefs.putBoolean(key, value); + } + } - protected void handleListPreference(String key, String value, - ListPreference preference) { - // For list preferences, look up the correct display value in - // the preference's 'entries' list. - int index = preference.findIndexOfValue(value); + protected void handleListPreference(String key, String value, + ListPreference preference) { + // For list preferences, look up the correct display value in + // the preference's 'entries' list. + int index = preference.findIndexOfValue(value); - // Set the summary to reflect the new value. - preference - .setSummary((index >= 0) ? preference.getEntries()[index] - : null); + // Set the summary to reflect the new value. + preference + .setSummary((index >= 0) ? preference.getEntries()[index] + : null); Log.i(OCSMSSettingsActivity.TAG, "Modifying listPreference " + key); OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(VirtualSettingsActivity._context); - // Handle sync frequency change - if ("sync_frequency".equals(key)) { - Account[] myAccountList = OCSMSSettingsActivity._accountMgr.getAccountsByType(OCSMSSettingsActivity._accountType); - long syncFreq = Long.parseLong(value); + // Handle sync frequency change + if ("sync_frequency".equals(key)) { + if (!PermissionChecker.checkPermission(this, Manifest.permission.GET_ACCOUNTS, + REQUEST_ACCOUNTS)) { + return; + } + + Account[] myAccountList = OCSMSSettingsActivity._accountMgr.getAccountsByType(OCSMSSettingsActivity._accountType); + long syncFreq = Long.parseLong(value); // Get ownCloud SMS account list for (Account acct: myAccountList) { @@ -121,7 +131,7 @@ public class OCSMSSettingsActivity extends VirtualSettingsActivity { prefs.putLong(key, syncFreq); } } - else if ("sync_bulk_messages".equals(key)) { + else if ("sync_bulk_messages".equals(key) || "minimum_sync_chars".equals(key)) { prefs.putInteger(key, Integer.parseInt(value)); } } diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java index d970ce6..c9b591c 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/remote_account/ContactListActivity.java @@ -126,7 +126,6 @@ public class ContactListActivity extends AppCompatActivity implements ASyncConta } private void fetchContact(String name) { - if (!PermissionChecker.checkPermission(this, Manifest.permission.READ_CONTACTS, REQUEST_CONTACTS)) { return; diff --git a/src/main/java/fr/unix_experience/owncloud_sms/enums/PermissionID.java b/src/main/java/fr/unix_experience/owncloud_sms/enums/PermissionID.java index e221326..818ed3c 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/enums/PermissionID.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/enums/PermissionID.java @@ -28,5 +28,6 @@ package fr.unix_experience.owncloud_sms.enums; public enum PermissionID { REQUEST_SMS, REQUEST_CONTACTS, + REQUEST_ACCOUNTS, REQUEST_MAX, } diff --git a/src/main/java/fr/unix_experience/owncloud_sms/prefs/PermissionChecker.java b/src/main/java/fr/unix_experience/owncloud_sms/prefs/PermissionChecker.java index 443a386..d7159b9 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/prefs/PermissionChecker.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/prefs/PermissionChecker.java @@ -39,8 +39,8 @@ import fr.unix_experience.owncloud_sms.enums.PermissionID; import fr.unix_experience.owncloud_sms.notifications.OCSMSNotificationUI; public class PermissionChecker { - public static boolean checkPermission(final Context context, final String permissionName, - final PermissionID permissionId) { + public static boolean checkPermission(Context context, final String permissionName, + final PermissionID permissionId) { int hasWriteContactsPermission = ContextCompat.checkSelfPermission(context, permissionName); if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) { // Check if we only have a context or a full activity @@ -53,7 +53,7 @@ public class PermissionChecker { @Override public void onClick(DialogInterface dialog, int which) { ActivityCompat.requestPermissions(activity, - new String[]{permissionName}, permissionId.ordinal()); + new String[]{ permissionName }, permissionId.ordinal()); } }); return false;