How to get all contacts from phonebook & SIM card in Android?

前端 未结 3 1805
太阳男子
太阳男子 2021-02-03 16:15

I am working to get all the contacts from phone book and SIM card in my application. I want to store those all contacts in my application SQLite DB. The code with which I am wor

3条回答
  •  盖世英雄少女心
    2021-02-03 16:49

    Below is the code which shows an easy way to read all phone numbers and names:

       Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
       while (phones.moveToNext())
       {
        String name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
      }
       phones.close();
    

    Also For Sim contact only you can use below code:

     private void allSIMContact()
      {
        try
        {
            String m_simPhonename = null; 
            String m_simphoneNo = null;
    
            Uri simUri = Uri.parse("content://icc/adn"); 
            Cursor cursorSim = this.getContentResolver().query(simUri,null,null,null,null);
    
            Log.i("PhoneContact", "total: "+cursorSim.getCount());
    
            while (cursorSim.moveToNext()) 
            {      
                m_simPhonename =cursorSim.getString(cursorSim.getColumnIndex("name"));
                m_simphoneNo = cursorSim.getString(cursorSim.getColumnIndex("number"));
                m_simphoneNo.replaceAll("\\D","");
                m_simphoneNo.replaceAll("&", "");
                m_simPhonename=m_simPhonename.replace("|","");
    
                Log.i("PhoneContact", "name: "+m_simPhonename+" phone: "+m_simphoneNo);
            }        
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
    

    EDITED:

    To get the details of the contacts like home,mobile,fax etc. you need to check for that individually as below:

            while (phone_crsr.moveToNext()) 
                { 
           int phone_type = phone_crsr.getInt(phone_crsr.getColumnIndex(Phone.TYPE));  
                switch (phone_type) 
                {    
                case Phone.TYPE_HOME: 
                     phone_home =phone_crsr.getString(phone_crsr.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                     Toast.makeText(this, "home"+phone_home, Toast.LENGTH_LONG).show();
                     break;          
                case Phone.TYPE_MOBILE:    
                     phone_mob=phone_crsr.getString(phone_crsr.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                     Toast.makeText(this, "mob"+phone_mob, Toast.LENGTH_LONG).show();  
                     break;            
                case Phone.TYPE_WORK:                                
                     phone_work=phone_crsr.getString(phone_crsr.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                      Toast.makeText(this, "work"+phone_work, Toast.LENGTH_LONG).show();
                             break;           
                 }
                }
    

提交回复
热议问题