Primary Data Is Only Coming?
I am trying to access the Details of the contacts but I get only the primary details , I am using the Ecliar platform that means, Now I get the name, number and the email ID of all
Solution 1:
remove break in all while loop.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import android.app.Activity;
import android.content.ContentResolver;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
publicclassStackOverFlowGetContactsActivityextendsActivity {
ListView lvItem;
private Button btnAdd;
String displayName="", emailAddress="", phoneNumber="";
ArrayList<String> contactlist=newArrayList<String>();
ArrayAdapter<String> itemAdapter;
ArrayList<String> emailarray=newArrayList<String>();
ArrayList<String> phonearray=newArrayList<String>();
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvItem = (ListView)this.findViewById(R.id.listView_items);
btnAdd = (Button)this.findViewById(R.id.btnAddItem);
itemAdapter = newArrayAdapter<String>(this, android.R.layout.simple_list_item_1,contactlist);
lvItem.setAdapter(itemAdapter);
btnAdd.setOnClickListener(newView.OnClickListener() {
publicvoidonClick(View v) {
readContacts();
}
});
}
privatevoidreadContacts()
{
ContentResolvercr=getContentResolver();
Cursorcursor= cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
displayName="";emailAddress=""; phoneNumber="";phonearray.clear(); emailarray.clear();
displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
Stringid= cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursoremails= cr.query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null);
while (emails.moveToNext())
{
emailarray.add(emails.getString(emails.getColumnIndex(Email.DATA)));
// break;
}
emails.close();
if(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
CursorpCur= cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",newString[]{id}, null);
while (pCur.moveToNext())
{
phonearray.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
// break;
}
pCur.close();
}
if(phonearray.size()>0)
{
for(int i=0; i<phonearray.size();i++)
{
if(emailarray.size()>0)
{
for(int j=0; j<emailarray.size();j++)
{
emailAddress=emailarray.get(j);
phoneNumber=phonearray.get(i);
contactlist.add(displayName+","+phoneNumber+","+ emailAddress);
}
}
else
{
phoneNumber=phonearray.get(i);
contactlist.add(displayName+","+phoneNumber+","+ emailAddress);
}
}
}
else
{
contactlist.add(displayName+","+phoneNumber+","+ emailAddress);
}
}
cursor.close();
sortList(contactlist);
itemAdapter.notifyDataSetChanged();
}
privatestaticvoidsortList(List<String> aItems){
Collections.sort(aItems, String.CASE_INSENSITIVE_ORDER);
}
}
Solution 2:
Try this code, replace readContacts()
method from yours and let me know what happen..
privatevoidreadContacts()
{
ContentResolver cr =getContentResolver();
Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext())
{
displayName = "" ;
ArrayList<String> phoneNumber = new ArrayList<String>();
ArrayList<String> emailAddress = new ArrayList<String>();
displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Cursor emails = cr.query(Email.CONTENT_URI,null,Email.CONTACT_ID + " = " + id, null, null);
while (emails.moveToNext())
{
emailAddress.add(emails.getString(emails.getColumnIndex(Email.DATA)));
break;
}
emails.close();
if(Integer.parseInt(cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{id}, null);
while (pCur.moveToNext())
{
phoneNumber.add(pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
break;
}
pCur.close();
}
int phoneNumberCount = phoneNumber.size();
int emailCount = emailAddress.size();
// Add arraylist data to contactlist..if(phoneNumberCount > emailCount) {
for (int i=0; i<phoneNumberCount; i++)
{
if(emailCount>i)
{
contactlist.add(displayName + " , " + phoneNumber.get(i) + " , " + emailAddress.get(i)+"\n");
}
else
{
contactlist.add(displayName + " , " + phoneNumber.get(i)+"\n");
}
}
}
else
{
for (int i=0; i<emailCount; i++)
{
if(phoneNumberCount>i)
{
contactlist.add(displayName+", "+phoneNumber.get(i)+", "+ emailAddress.get(i)+"\n");
}
else
{
contactlist.add(displayName+","+ emailAddress.get(i)+"\n");
}
}
}
}
Collections.sort(contactlist);
itemAdapter.notifyDataSetChanged();
cursor.close();
}
Post a Comment for "Primary Data Is Only Coming?"