1

Androidで連絡先を読む練習をしており、連絡先と番号を取得していますが、うまく配置されていません。つまり、割り当てられた名前は番号の所有者のものではありません。ここに私のコードがあります:

String [] projection= new String[]{ContactsContract.Contacts.DISPLAY_NAME,};
    String [] phoneProjection= new String [] {Phone.NUMBER};


     ContentResolver crInstance=getContentResolver();

    final  Cursor name=crInstance.query(ContactsContract.Contacts.CONTENT_URI, projection, null, null, null);
    final Cursor phone=crInstance.query(Phone.CONTENT_URI, phoneProjection, null, null, null);
    contactview = (TextView) findViewById(R.id.contactview);
    name.moveToFirst();
    phone.moveToFirst();
    while (!name.isAfterLast()&&!phone.isAfterLast()){
        String pname=name.getString(name.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));



        contactview.append("Name:");
        contactview.append(pname);
        contactview.append("\n");


        final int contactNoColIndex= phone.getColumnIndex(Phone.NUMBER);

        String pnumber=phone.getString(contactNoColIndex);

        contactview.append("Phone:");
        contactview.append(pnumber);
        contactview.append("\n");
        contactview.append("\n");

        name.moveToNext();
        phone.moveToNext();
    }
    name.close();
    phone.close();

助けてください

4

2 に答える 2

3

簡単な方法は次のとおりです。

 ContentResolver resolver = getContentResolver();
 Cursor cursor = resolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);

    if (cursor.moveToFirst()) {

        String name;
        String phone;

        while (cursor.moveToNext()) {
            name = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            phone = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            // do what you want with the name and the phone number 

        }

    } else {
        Log.v(LOG_TAG, "Cursor is empty");
    }

cursor.close();

マニフェストに許可を追加することを忘れないでください

于 2016-02-24T10:31:57.047 に答える