diff --git a/src/main/java/fr/unix_experience/owncloud_sms/activities/MainActivity.java b/src/main/java/fr/unix_experience/owncloud_sms/activities/MainActivity.java index b2f25e5..41afe01 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/activities/MainActivity.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/activities/MainActivity.java @@ -166,10 +166,10 @@ public class MainActivity extends Activity { if (cMon.isValid()) { // Now fetch messages since last stored date - JSONArray smsList = new SmsFetcher(ctx) - .bufferMessagesSinceDate((long) 0); + JSONArray smsList = new JSONArray(); + new SmsFetcher(ctx).bufferMessagesSinceDate(smsList, (long) 0); - if (smsList != null) { + if (smsList.length() > 0) { OCSMSNotificationManager nMgr = new OCSMSNotificationManager(ctx); nMgr.setSyncProcessMsg(); new SyncTask(getApplicationContext(), smsList).execute(); 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 546356c..9eeacba 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 @@ -119,10 +119,11 @@ public class ContactListActivity extends Activity implements ASyncContactLoad { null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{contactId}, null); + while ((phones != null) && phones.moveToNext()) { - String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)) - .replaceAll(" ", ""); - r.add(phoneNumber); + r.add(phones.getString(phones.getColumnIndex( + ContactsContract.CommonDataKinds.Phone.NUMBER)) + .replaceAll(" ", "")); } if (phones != null) { 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 5ec244e..ec7e1b1 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 @@ -74,12 +74,13 @@ public class ConnectivityChanged extends BroadcastReceiver implements ASyncSMSSy Log.d(ConnectivityChanged.TAG,"Synced Last:" + lastMessageSynced); // Now fetch messages since last stored date - JSONArray smsList = new SmsFetcher(context).bufferMessagesSinceDate(lastMessageSynced); + JSONArray smsList = new JSONArray(); + new SmsFetcher(context).bufferMessagesSinceDate(smsList, lastMessageSynced); AtomicReference cMon = new AtomicReference<>(new ConnectivityMonitor(context)); // Synchronize if network is valid and there are SMS - if (cMon.get().isValid() && (smsList != null)) { + if (cMon.get().isValid() && (smsList.length() > 0)) { new SyncTask(context, smsList).execute(); } } diff --git a/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncContactLoad.java b/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncContactLoad.java index 017ab98..8004c29 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncContactLoad.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/engine/ASyncContactLoad.java @@ -85,9 +85,10 @@ public interface ASyncContactLoad { Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); if (((cur != null) ? cur.getCount() : 0) > 0) { + String id, name; while ((cur != null) && cur.moveToNext()) { - String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); - String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); + id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); + name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); if (Integer.parseInt(cur.getString( cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { diff --git a/src/main/java/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java b/src/main/java/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java index 6e71af0..8d6ce27 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/engine/OCSMSOwnCloudClient.java @@ -152,7 +152,8 @@ public class OCSMSOwnCloudClient { fetcher.setExistingSentMessages(sentSmsList); fetcher.setExistingDraftsMessages(draftsSmsList); - smsList = fetcher.fetchAllMessages(); + smsList = new JSONArray(); + fetcher.fetchAllMessages(smsList); // Get maximum message date present in smsList to keep a step when connectivity changes lastMsgDate = fetcher.getLastMessageDate(); @@ -329,7 +330,7 @@ public class OCSMSOwnCloudClient { } } - if(status == HttpStatus.SC_OK) { + if (status == HttpStatus.SC_OK) { String response; try { response = req.getResponseBodyAsString(); diff --git a/src/main/java/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java b/src/main/java/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java index 3a38f94..01770ba 100644 --- a/src/main/java/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java +++ b/src/main/java/fr/unix_experience/owncloud_sms/engine/SmsFetcher.java @@ -38,15 +38,13 @@ public class SmsFetcher { _existingDraftsMessages = null; } - public JSONArray fetchAllMessages() { - _jsonDataDump = new JSONArray(); - bufferMailboxMessages(MailboxID.INBOX); - bufferMailboxMessages(MailboxID.SENT); - bufferMailboxMessages(MailboxID.DRAFTS); - return _jsonDataDump; + public void fetchAllMessages(JSONArray result) { + bufferMailboxMessages(result, MailboxID.INBOX); + bufferMailboxMessages(result, MailboxID.SENT); + bufferMailboxMessages(result, MailboxID.DRAFTS); } - private void bufferMailboxMessages(MailboxID mbID) { + private void bufferMailboxMessages(JSONArray result, MailboxID mbID) { String mbURI = mapMailboxIDToURI(mbID); if ((_context == null) || (mbURI == null)) { @@ -71,8 +69,9 @@ public class SmsFetcher { JSONObject entry = new JSONObject(); try { + String colName; for(int idx=0;idx 0) { - sb.append(","); - } - sb.append(existingMessages.getInt(i)); - } catch (JSONException ignored) { - - } - } - } + int len = existingMessages.length(); + for (int i = 0; i < len; i++) { + try { + if (sb.length() > 0) { + sb.append(","); + } + sb.append(existingMessages.getInt(i)); + } catch (JSONException ignored) { + + } + } return sb.toString(); } @@ -311,7 +310,6 @@ public class SmsFetcher { } private final Context _context; - private JSONArray _jsonDataDump; private JSONArray _existingInboxMessages; private JSONArray _existingSentMessages; private JSONArray _existingDraftsMessages;