0

次のコードを使用して、連絡先からすべての電話番号を取得します。

Cursor c = context.getContentResolver().query(
                        Data.CONTENT_URI,
                        new String[] { Phone.NUMBER },
                        Data.MIMETYPE + "='" +     Phone.CONTENT_ITEM_TYPE
                                + "'", null, null);

それは私の Android 携帯電話で完全に動作します。

しかし、一部のユーザーは、私のアプリが連絡先からすべての電話番号を取得するわけではなく、一部の電話番号しか取得しないと言っています。理由がわかりません..なぜですか?

4

1 に答える 1

3

これにより、基本連絡先データを保持しているカーソルが取得され、連絡先が持つ電話番号がループされ、複数の電話番号を持つことができます。

Uri uri = data.getData();

Cursor cursor=ctx.getContentResolver().query(uri, null, null, null, null);


while (cursor.moveToNext()) { 
   String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
   String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 

   if (Boolean.parseBoolean(hasPhone)) { 
                    // You know have the number so now query it like this
    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
          null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, 
          null, null); 

        while (phones.moveToNext()) { 
           String phoneNumber = phones.getString( 
                  phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));                 
        } 
        phones.close(); 
    } 
 }
于 2012-07-31T05:26:33.157 に答える