Contact display phone numbers + don't reload contacts on back

This commit is contained in:
Sylvain Berfini 2012-06-22 16:28:20 +02:00
parent 78f83b9a71
commit af3d82ae8d
2 changed files with 27 additions and 12 deletions

View file

@ -106,6 +106,23 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte
LinphoneActivity.instance().displayContact((Contact) adapter.getItemAtPosition(position)); LinphoneActivity.instance().displayContact((Contact) adapter.getItemAtPosition(position));
} }
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
cursor = Compatibility.getContactsCursor(getActivity().getContentResolver());
contacts = new ArrayList<Contact>();
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 @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
@ -114,20 +131,8 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte
} }
if (contactsList.getAdapter() == null) { if (contactsList.getAdapter() == null) {
cursor = Compatibility.getContactsCursor(getActivity().getContentResolver());
contactsList.setAdapter(new ContactsListAdapter()); contactsList.setAdapter(new ContactsListAdapter());
contactsList.setFastScrollEnabled(true); contactsList.setFastScrollEnabled(true);
contacts = new ArrayList<Contact>();
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); contactsList.setSelectionFromTop(lastKnownPosition, 0);

View file

@ -14,6 +14,7 @@ import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.provider.ContactsContract; import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.SipAddress; import android.provider.ContactsContract.CommonDataKinds.SipAddress;
import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Contacts.Data; import android.provider.ContactsContract.Contacts.Data;
@ -71,6 +72,7 @@ public class ApiFivePlus {
Uri uri = ContactsContract.Data.CONTENT_URI; Uri uri = ContactsContract.Data.CONTENT_URI;
String[] projection = {ContactsContract.CommonDataKinds.Im.DATA}; String[] projection = {ContactsContract.CommonDataKinds.Im.DATA};
// SIP addresses
if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) { if (Version.sdkAboveOrEqual(Version.API09_GINGERBREAD_23)) {
String selection = new StringBuilder() String selection = new StringBuilder()
.append(ContactsContract.Data.CONTACT_ID) .append(ContactsContract.Data.CONTACT_ID)
@ -105,6 +107,14 @@ public class ApiFivePlus {
} }
c.close(); 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; return list;
} }