0

ユーザーの連絡先リストから連絡先番号を読み取ろうとしています。これが私のコードです

Cursor cursor = getContacts();
if(cursor.getCount()>0){
    while (cursor.moveToNext()) {
        String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
        int numberField = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
        textViewDisplay.append("Name: ");
        textViewDisplay.append(displayName+"Number :"+numberField);
        textViewDisplay.append("\n");
    }
}
4

4 に答える 4

2

cursor.getColumnIndex(COLUMN)に取り込んでいintます。したがって、メソッドは、COLUMN送信されたインデックスをパラメーターとして返します。に含まれない電話番号が必要です。intそのサイズは常に 4 バイトを超えており、次のような特殊文字も含まれています。+

Numberしたがって、いくつかのString変数を取得する必要があります

使用するString numberField = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

アヌジが提案したように。

于 2013-03-05T12:27:37.830 に答える
1

これを使って

String numberField = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

それ以外の

int numberField = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
于 2013-03-05T12:24:24.363 に答える
1

「1」を返すと、連絡先に電話番号があることを意味します。これを試して、

 String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
                      String cNumber="";
                      if (hasPhone.equalsIgnoreCase("1")) 
                      {
                          Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null, 
                          ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
                          phones.moveToFirst();
                          cNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                          phones.close();

                      }
于 2013-03-05T12:26:49.783 に答える
1

これを試してください:

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()) {
                    if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {

                        // Get contact id (id)
                        String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 

                        // Get contact name (displayName)
                        String displayName = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));


                        // Get Phone Number.... 

                        Uri URI_PHONE = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
                        String SELECTION_PHONE = ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ " = ?";
                        String[] SELECTION_ARRAY_PHONE = new String[] { id };

                        Cursor currPhone = cr.query(URI_PHONE, null,SELECTION_PHONE, SELECTION_ARRAY_PHONE, null);
                        int indexPhoneNo = currPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
                        int indexPhoneType = currPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE);

                        if (currPhone.getCount() > 0) {

                            while (currPhone.moveToNext()) {
                                String phoneNoStr = currPhone.getString(indexPhoneNo);
                                String phoneTypeStr = currPhone.getString(indexPhoneType);
                            }
                        }
                        currPhone.close();
                    }
                }
            }
            cur.close();
        }
于 2013-03-05T12:39:14.880 に答える