2011-02-09 17 views
11

私はすべての連絡先とそこにメールアドレスのリストを取得しようとしています。アンドロイドの連絡先

現在、このコードを使用していますが、名前とメールが重複しています。私が欲しいのは、ただひとりの人と一つのメールです。連絡先を照会しながら連絡先をマージできる方法はありますか?

また、> 2.0解決策を探しています。

private void init() { 

    ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
    if (cur.getCount() > 0) { 
    while (cur.moveToNext()) { 
     String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
    String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", new String[]{id},null); 
     while (emailCur.moveToNext()) { 
       String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
       Log.e("Email",name+" "+email); 
      } 
      emailCur.close(); 
     } 

    } 
+0

はこれを見ている:** [アンドロイド2.0上の接点を読む方法](http://stackoverflow.com/questions/1721279/how-to-read-contacts-on-android-2- 0)** –

+0

これを試してみてくださいhttp://mobile.tutsplus.com/tutorials/android/android-essentials-using-the-contact-picker/ –

+0

まあ、私は実際に最後に複数の連絡先セレクタを構築しようとしています。だから、ユーザーは来て、電子メールで複数の人を選択することができます。しかし、病気は、そのリンクを見て、私はfrom.Thanksから学ぶことができるtheresコードを参照してください! –

答えて

17

下記の作業コードを試してください。

public class dddddddddd extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // setContentView(R.layout.main); 
     readContacts(); 
    } 

    public void readContacts(){ 
     ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 

     if (cur.getCount() > 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) { 
        System.out.println("name : " + name + ", ID : " + id); 

        // get the phone number 
        Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
              ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
              new String[]{id}, null); 
        while (pCur.moveToNext()) { 
          String phone = pCur.getString(
           pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
          System.out.println("phone" + phone); 
        } 
        pCur.close(); 


        // get email and type 


        Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, 
          null, 
          ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
          new String[]{id}, null); 
        while (emailCur.moveToNext()) { 
         // This would allow you get several email addresses 
          // if the email addresses were stored in an array 
         String email = emailCur.getString(
             emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA)); 
         String emailType = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 

         int type = emailCur.getInt(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE)); 
         String customLabel = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.LABEL)); 
         CharSequence CustomemailType = ContactsContract.CommonDataKinds.Email.getTypeLabel(this.getResources(), type, customLabel); 

         //System.out.println("Email " + email + " Email Type : " + emailType); 
        } 
        emailCur.close(); 

        // Get note....... 
        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); 
        if (noteCur.moveToFirst()) { 
         String note = noteCur.getString(
         noteCur.getColumnIndex(ContactsContract.CommonDataKinds.Note.NOTE)); 
         System.out.println("Note " + note); 
        } 
        noteCur.close(); 

        //Get Postal Address.... 

        String addrWhere = ContactsContract.Data.CONTACT_ID 
          + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?"; 
        String[] addrWhereParams = new String[]{id, 
         ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE}; 
        Cursor addrCur = cr.query(ContactsContract.Data.CONTENT_URI, 
           null, null, null, null); 
        while(addrCur.moveToNext()) { 
         String poBox = addrCur.getString(
            addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POBOX)); 
         String street = addrCur.getString(
            addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET)); 
         String city = addrCur.getString(
            addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY)); 
         String state = addrCur.getString(
            addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION)); 
         String postalCode = addrCur.getString(
            addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE)); 
         String country = addrCur.getString(
            addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY)); 
         String type = addrCur.getString(
            addrCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE)); 

         // Do something with these.... 

        } 
        addrCur.close(); 

        // Get Instant Messenger......... 
        String imWhere = ContactsContract.Data.CONTACT_ID + " = ? AND " 
        + ContactsContract.Data.MIMETYPE + " = ?"; 
        String[] imWhereParams = new String[]{id, 
         ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE}; 
        Cursor imCur = cr.query(ContactsContract.Data.CONTENT_URI, 
          null, imWhere, imWhereParams, null); 
        if (imCur.moveToFirst()) { 
         String imName = imCur.getString(
           imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.DATA)); 
         String imType; 
         imType = imCur.getString(
           imCur.getColumnIndex(ContactsContract.CommonDataKinds.Im.TYPE)); 
        } 
        imCur.close(); 

        // Get Organizations......... 

        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); 
        if (orgCur.moveToFirst()) { 
         String orgName = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA)); 
         String title = orgCur.getString(orgCur.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE)); 
        } 
        orgCur.close(); 
       } 
      } 
     } 
    } 
} 
+2

どのように写真ですか? – ajdeguzman