From cc14488a88ecbd84e73dc73c209812fd03f9f297 Mon Sep 17 00:00:00 2001 From: Loic Blot Date: Sun, 30 Aug 2015 10:28:57 +0200 Subject: [PATCH] Abort sync process earlier when no account is available --- .../broadcast_receivers/ConnectivityChanged.java | 12 ++++++++++++ .../owncloud_sms/engine/ASyncSMSSync.java | 6 +++--- .../owncloud_sms/observers/SmsObserver.java | 11 +++++++++++ 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java b/src/main/java/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java index a25efe3..f8e82b9 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/broadcast_receivers/ConnectivityChanged.java @@ -19,10 +19,14 @@ package fr.unix_experience.owncloud_sms.broadcast_receivers; import org.json.JSONArray; +import android.accounts.Account; +import android.accounts.AccountManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; + +import fr.unix_experience.owncloud_sms.R; import fr.unix_experience.owncloud_sms.engine.ASyncSMSSync; import fr.unix_experience.owncloud_sms.engine.ConnectivityMonitor; import fr.unix_experience.owncloud_sms.engine.SmsFetcher; @@ -32,6 +36,13 @@ public class ConnectivityChanged extends BroadcastReceiver implements ASyncSMSSy @Override public void onReceive(final Context context, final Intent intent) { + // No account: abort + final Account[] myAccountList = AccountManager.get(context). + getAccountsByType(context.getString(R.string.account_type)); + if (myAccountList.length == 0) { + return; + } + final ConnectivityMonitor cMon = new ConnectivityMonitor(context); final OCSMSSharedPrefs prefs = new OCSMSSharedPrefs(context); @@ -55,6 +66,7 @@ public class ConnectivityChanged extends BroadcastReceiver implements ASyncSMSSy } private void checkMessagesAndSend(final Context context) { + // Get last message synced from preferences final Long lastMessageSynced = (new OCSMSSharedPrefs(context)).getLastMessageDate(); Log.d(TAG,"Synced Last:" + lastMessageSynced); diff --git a/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncSMSSync.java b/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncSMSSync.java index a0bc961..b432555 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncSMSSync.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncSMSSync.java @@ -38,12 +38,12 @@ public interface ASyncSMSSync { @Override protected Void doInBackground(final Void... params) { - final OCSMSNotificationManager nMgr = new OCSMSNotificationManager(_context); - // Get ownCloud SMS account list final AccountManager _accountMgr = AccountManager.get(_context); - final Account[] myAccountList = _accountMgr.getAccountsByType(_context.getString(R.string.account_type)); + + // Notify that we are syncing SMS + final OCSMSNotificationManager nMgr = new OCSMSNotificationManager(_context); for (final Account element : myAccountList) { final Uri serverURI = Uri.parse(_accountMgr.getUserData(element, "ocURI")); diff --git a/src/main/java/fr/unix_experience/owncloud_sms/observers/SmsObserver.java b/src/main/java/fr/unix_experience/owncloud_sms/observers/SmsObserver.java index 69bbda3..c547377 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/observers/SmsObserver.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/observers/SmsObserver.java @@ -19,11 +19,15 @@ package fr.unix_experience.owncloud_sms.observers; import org.json.JSONArray; +import fr.unix_experience.owncloud_sms.R; import fr.unix_experience.owncloud_sms.engine.ASyncSMSSync; import fr.unix_experience.owncloud_sms.engine.ConnectivityMonitor; import fr.unix_experience.owncloud_sms.engine.OCSMSOwnCloudClient; import fr.unix_experience.owncloud_sms.engine.SmsFetcher; import fr.unix_experience.owncloud_sms.enums.MailboxID; + +import android.accounts.Account; +import android.accounts.AccountManager; import android.content.Context; import android.database.ContentObserver; import android.os.Handler; @@ -43,6 +47,13 @@ public class SmsObserver extends ContentObserver implements ASyncSMSSync { public void onChange(boolean selfChange) { super.onChange(selfChange); Log.d(TAG, "onChange SmsObserver"); + + // No account, abort + final Account[] myAccountList = AccountManager.get(_context). + getAccountsByType(_context.getString(R.string.account_type)); + if (myAccountList.length == 0) { + return; + } SmsFetcher fetcher = new SmsFetcher(_context); JSONArray smsList = fetcher.getLastMessage(MailboxID.ALL);