diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index e9512f8..c41f3ba 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -29,6 +29,9 @@ + + + { v = inflater.inflate(_itemLayout, null); } + if (_objects.size() == 0) { + return null; + } + final String element = _objects.get(position); if (element != null) { 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 7e07497..2998550 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 @@ -2,9 +2,12 @@ package fr.unix_experience.owncloud_sms.engine; import android.accounts.Account; import android.accounts.AccountManager; +import android.content.ContentResolver; import android.content.Context; +import android.database.Cursor; import android.net.Uri; import android.os.AsyncTask; +import android.provider.ContactsContract; import org.json.JSONArray; import org.json.JSONException; @@ -58,9 +61,48 @@ public interface ASyncContactLoad { return false; } + ArrayList serverPhoneList = new ArrayList<>(); + JSONArray phoneNumbers = _client.getServerPhoneNumbers(); for (int i = 0; i < phoneNumbers.length(); i++) { String phone = phoneNumbers.getString(i); + serverPhoneList.add(phone); + } + + // Read all contacts + ContentResolver cr = _context.getContentResolver(); + Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, + null, null, null, null); + if (cur.getCount() > 0) { + while (cur.moveToNext()) { + String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); + String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); + if (Integer.parseInt(cur.getString( + cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { + + // Fetch all phone numbers + Cursor pCur = cr.query( + ContactsContract.CommonDataKinds.Phone.CONTENT_URI, + null, + ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", + new String[]{id}, null); + while (pCur.moveToNext()) { + String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); + phoneNo = phoneNo.replaceAll(" ", ""); + if (serverPhoneList.contains(phoneNo)) { + if (!_objects.contains(name)) { + _objects.add(name); + } + serverPhoneList.remove(phoneNo); + } + } + pCur.close(); + } + } + } + cur.close(); + + for (String phone: serverPhoneList) { _objects.add(phone); } 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 ce58b80..b65d830 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 @@ -87,7 +87,6 @@ public class OCSMSOwnCloudClient { return null; } - Log.d(TAG, obj.toString()); try { return obj.getJSONArray("phoneList"); } catch (final JSONException e) {