diff --git a/src/org/linphone/ContactsFragment.java b/src/org/linphone/ContactsFragment.java index 45303e125..a9c3bf5b8 100644 --- a/src/org/linphone/ContactsFragment.java +++ b/src/org/linphone/ContactsFragment.java @@ -106,6 +106,23 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte LinphoneActivity.instance().displayContact((Contact) adapter.getItemAtPosition(position)); } + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + cursor = Compatibility.getContactsCursor(getActivity().getContentResolver()); + contacts = new ArrayList(); + new Thread(new Runnable() { + @Override + public void run() { + for (int i = 0; i < cursor.getCount(); i++) { + Contact contact = getContact(i); + contacts.add(contact); + } + } + }).start(); + } + @Override public void onResume() { super.onResume(); @@ -114,20 +131,8 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte } if (contactsList.getAdapter() == null) { - cursor = Compatibility.getContactsCursor(getActivity().getContentResolver()); contactsList.setAdapter(new ContactsListAdapter()); contactsList.setFastScrollEnabled(true); - - contacts = new ArrayList(); - new Thread(new Runnable() { - @Override - public void run() { - for (int i = 0; i < cursor.getCount(); i++) { - Contact contact = getContact(i); - contacts.add(contact); - } - } - }).start(); } contactsList.setSelectionFromTop(lastKnownPosition, 0); diff --git a/src/org/linphone/compatibility/ApiFivePlus.java b/src/org/linphone/compatibility/ApiFivePlus.java index f1db292fb..37625138d 100644 --- a/src/org/linphone/compatibility/ApiFivePlus.java +++ b/src/org/linphone/compatibility/ApiFivePlus.java @@ -14,6 +14,7 @@ import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.provider.ContactsContract; +import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.CommonDataKinds.SipAddress; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Contacts.Data; @@ -71,6 +72,7 @@ public class ApiFivePlus { Uri uri = ContactsContract.Data.CONTENT_URI; String[] projection = {ContactsContract.CommonDataKinds.Im.DATA}; + // SIP addresses if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) { String selection = new StringBuilder() .append(ContactsContract.Data.CONTACT_ID) @@ -105,6 +107,14 @@ public class ApiFivePlus { } c.close(); } + + // Phone Numbers + Cursor c = cr.query(Phone.CONTENT_URI, null, Phone.CONTACT_ID + " = " + id, null, null); + while (c.moveToNext()) { + String number = c.getString(c.getColumnIndex(Phone.NUMBER)); + list.add(number); + } + c.close(); return list; }