2012-01-07 134 views
4

我是一個在android平臺上編寫短信的應用程序。爲此,我需要獲得「聯繫人」,「最近聯繫人」和「羣組」。請告訴我任何教程或如何做的代碼。當我們點擊這三個按鈕中的任何一個時,應該有聯繫人以及用於選擇多個聯繫人的複選框。 謝謝。如何在Android中獲取聯繫人

回答

18

這裏是代碼來獲得接觸編程

ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
    null, null, null); 
    String id = null, name = null, email = null, phone = null, note = null, orgName =  null, title = null; 
    String Phone1 = "unknown", Phone2 = "unknown", Phone3 = "unknown", type1 = "unknown",  type2 = "unknown", type3 = "unknown"; 
    int size = cur.getCount(); 
if (cur.getCount() > 0) { 
    int cnt = 1; 
    while (cur.moveToNext()) 
    { 
     email = ""; 
     name = ""; 
     cnt++; 
     id = cur.getString(cur 
       .getColumnIndex(ContactsContract.Contacts._ID)); 
     name = cur 
       .getString(cur 
         .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

     if (name != null && name != "") { 
      if (!checkEmail(name)) { 
       email = ""; 

      } else { 
       email = name; 
       name = ""; 
      } 
     } 
     if (Integer 
       .parseInt(cur.getString(cur 
         .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) 

     { 
      System.out.println("name : " + name); 
      Cursor pCur = cr 
        .query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
          null, 
          ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
            + " = ?", new String[] { id }, 
          null); 

      Phone1 = " "; 
      Phone2 = " "; 
      Phone3 = " "; 
      while (pCur.moveToNext()) 
      { 
       String phonetype = pCur 
         .getString(pCur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
       String MainNumber = pCur 
         .getString(pCur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
       if (phonetype.equalsIgnoreCase("1")) { 
        Phone1 = MainNumber; 
        type1 = "home"; 
       } else if (phonetype.equalsIgnoreCase("2")) { 
        Phone2 = MainNumber; 
        type2 = "mobile"; 
       } else { 
        Phone3 = MainNumber; 
        type3 = "work"; 
       } 
      } 
      pCur.close(); 

     } 
      Cursor addrCur = cr 
        .query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI, 
          null, 
          ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID 
            + " = ?", new String[] { id }, 
          null); 
      if (addrCur.getCount() == 0) { 
       addbuffer.append("unknown"); 
      } else { 
       int cntr = 0; 
       while (addrCur.moveToNext()) { 

        cntr++; 
        String poBox = addrCur 
          .getString(addrCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX)); 
        if (poBox == null) { 
         poBox = " "; 
        } 
        String street = addrCur 
          .getString(addrCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); 
        if (street == null) { 
         street = " "; 
        } 
        String neb = addrCur 
          .getString(addrCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.NEIGHBORHOOD)); 
        if (neb == null) { 
         neb = " "; 
        } 
        String city = addrCur 
          .getString(addrCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); 
        if (city == null) { 
         city = " "; 
        } 
        String state = addrCur 
          .getString(addrCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); 
        if (state == null) { 
         state = " "; 
        } 
        String postalCode = addrCur 
          .getString(addrCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); 
        if (postalCode == null) { 
         postalCode = " "; 
        } 
        String country = addrCur 
          .getString(addrCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY)); 
        if (country == null) { 
         country = " "; 
        } 

        String type = addrCur 
          .getString(addrCur 
            .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE)); 
        if (type == null) { 
         type = " "; 
        } 
       } 

      } 

      addrCur.close(); 

      String noteWhere = ContactsContract.Data.CONTACT_ID 
        + " = ? AND " + ContactsContract.Data.MIMETYPE 
        + " = ?"; 
      String[] noteWhereParams = new String[] { 
        id, 
        ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE }; 
      Cursor noteCur = cr.query(
        ContactsContract.Data.CONTENT_URI, null, 
        noteWhere, noteWhereParams, null); 

      note = " "; 

      if (noteCur.moveToFirst()) { 
       note = noteCur 
         .getString(noteCur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE)); 

       if (note == null) { 
        note = " "; 
       } 
      } 
      noteCur.close(); 
      String orgWhere = ContactsContract.Data.CONTACT_ID 
        + " = ? AND " + ContactsContract.Data.MIMETYPE 
        + " = ?"; 
      String[] orgWhereParams = new String[] { 
        id, 
        ContactsContract.CommonDataKinds.Organization.CONTENT_ITEM_TYPE }; 
      Cursor orgCur = cr.query(
        ContactsContract.Data.CONTENT_URI, null, 
        orgWhere, orgWhereParams, null); 
      orgName = " "; 
      if (orgCur.moveToFirst()) { 
       orgName = orgCur 
         .getString(orgCur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Organization.COMPANY)); 

      } 
      if (orgName == null) { 
       orgName = " "; 
      } 
      orgCur.close(); 

      Cursor emailCur = cr 
        .query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
          null, 
          ContactsContract.CommonDataKinds.Email.CONTACT_ID 
            + " = ?", new String[] { id }, 
          null); 
      email = "unknown"; 
      while (emailCur.moveToNext()) { 

       email = emailCur 
         .getString(emailCur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       String emailType = emailCur 
         .getString(emailCur 
           .getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 

       if (email == null) { 
        email = "unknown"; 
       } 
       if (emailType.equalsIgnoreCase("1")) { 
       } else { 
       } 
      } 

      // add 
      emailCur.close(); 
+1

這是我的應用程序運行的代碼。問我是否有任何疑問 – 2012-01-07 13:12:29

+0

checkEmail和addBuffer函數做了什麼? – 2013-12-06 08:20:56

+1

@rosualin CheckEmail方法是檢查有效的電子郵件地址(電子郵件語法) – 2013-12-06 11:29:40