Skip to content Skip to sidebar Skip to footer

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?"