I want to select unique contacts from Android only for those contacts that have phone numbers. I am using this code
ContentResolver cr = getContentResolver(); Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, ContactsContract.Contacts.DISPLAY_NAME); // Find the ListView resource. mainListView = (ListView) findViewById(R.id.mainListView); // When item is tapped, toggle checked properties of CheckBox and // Planet. mainListView .setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View item, int position, long id) { ContactsList planet = listAdapter.getItem(position); planet.toggleChecked(); PlanetViewHolder viewHolder = (PlanetViewHolder) item .getTag(); viewHolder.getCheckBox().setChecked(planet.isChecked()); } }); // Create and populate planets. planets = (ContactsList[]) getLastNonConfigurationInstance(); // planets = new Planet[10]; // planets.Add("asdf"); ArrayList<ContactsList> planetList = new ArrayList<ContactsList>(); String phoneNumber = null; String phoneType = null; count = cur.getCount(); contacts = new ContactsList[count]; if (planets == null) { if (cur.getCount() > 0) { planets = new ContactsList[cur.getCount()]; int i = 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) { // Query phone here. Covered next Cursor pCur = cr .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[] { id }, null); // WHILE WE HAVE CURSOR GET THE PHONE NUMERS while (pCur.moveToNext()) { // Do something with phones phoneNumber = pCur .getString(pCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA)); phoneType = pCur .getString(pCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); Log.i("Pratik", name + " PHONE :" + phoneNumber); Log.i("Pratik", "PHONE TYPE :" + phoneType); } pCur.close(); } planets = new ContactsList[] { new ContactsList(name, phoneNumber) }; contacts[i] = planets[0]; planetList.addAll(Arrays.asList(planets)); i++; } }
This code retrieves all contacts and puts them in a list. but I want unique contacts and only those that donβt have a phone. How can i do this?? Is there any method to pass any argument in the request only to select unique contacts?
source share