1

電話から番号のみの連絡先を取得してarrayListに入れ、レイジーアダプターで表示し、名前をクリックすると番号のみを表示しようとしています。連絡先と番号のリストを取得できましたが、問題は、複数の番号を持つ連絡先がある場合、リストに追加されるだけです。

たとえばのようなもの

デビッド +1 508 656 9043

デビッド +1 403 604 7053

デビッド +1 212 608 7053

代わりに、David だけをリストに表示したいと思います。クリックすると、3 つの数字がすべて表示されます。

私はこれを試しました:

  void getContactNumbers()
 {
    ContentResolver cr = getContentResolver();
     String sortOrder = ContactsContract.Contacts.DISPLAY_NAME+ " COLLATE LOCALIZED ASC";
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, sortOrder);
    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));

              Log.e("contact", "...Contact Name ...." + name);
              if (Integer.parseInt(cur.getString(cur.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()) 
                 {
                     String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                     Log.e("contact", "...Contact Name ...." + name + "...contact Number..." + phoneNo);
                 }

                 pCur.close();
            }
        }
    }
}

この部分をどう解決するか。

ありがとう!

4

2 に答える 2

-1

この方法でクエリを実行する必要がありget contactますmultiple number

final Uri uri = ContactsContract.Contacts.CONTENT_URI;
            final String[] projection = new String[] {
                    ContactsContract.Contacts._ID,
                    ContactsContract.Contacts.DISPLAY_NAME,
                    ContactsContract.Contacts.PHOTO_URI
            };

            String selection = ContactsContract.Contacts.IN_VISIBLE_GROUP + " = '1'";
            String[] selectionArgs = null;
            final String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
            Cursor cur = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);

    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));

              Log.e("contact", "...Contact Name ...." + name);
               // get the phone number
                Cursor pCur = getApplicationContext().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                                    + " = ?", new String[] { id }, null);
                     while (pCur.moveToNext()) {
                         number = pCur.getString(pCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                    }
             pCur.close();

        }
    }
    cur.close();

このコードを試してgetting errorから、コメントを入れてください。

于 2013-06-20T04:46:17.863 に答える