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) {