0

IDを持つ特定の連絡先にカーソルを設定する必要があります

   Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
                            null,null, null, null);

すべてのデータベースのコードがありますが、どうすれば最適化できますか? 連絡先の名前とデフォルトの番号を返すカーソルが必要です

ありがとうございました

4

2 に答える 2

0
cursor = getContentResolver().query(Phone.CONTENT_URI,
                            null, Phone.CONTACT_ID + "=?", new String[] { id },
                            Phone.DISPLAY_NAME + " ASC");
于 2012-08-08T14:10:06.467 に答える
0

実際には 2 つのカーソルが必要です。1 つは名前と ID 用、もう 1 つは電話番号用です。

 Cursor c = managedQuery(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

 if (c.moveToFirst()) {
    name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    fullName  = c.getString(c.getColumnIndex("display_name_alt"));
    id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));

    if (Integer.parseInt(c.getString(c.getColumnIndex
                   (ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
        //phone number

        Cursor phones = getContentResolver().query(Phone.CONTENT_URI, 
                              null,
                              Phone.CONTACT_ID + " = " + id,
                              null, 
                              null);

        while (phones.moveToNext()) {
               String number_type = phones.getString(phones.getColumnIndex
                              (ContactsContract.CommonDataKinds.Phone.TYPE));
               if(number_type.equalsIgnoreCase("1"))
                    number1 = phones.getString(phones.getColumnIndex
                              (ContactsContract.CommonDataKinds.Phone.NUMBER));
               if(number_type.equalsIgnoreCase("2"))
                    number2 = phones.getString(phones.getColumnIndex
                              (ContactsContract.CommonDataKinds.Phone.NUMBER));
        }

        phones.close();
    }
 }
 c.close(); 
于 2012-08-06T10:00:02.660 に答える