1

以下のコードを使用するたびに、連絡先リストにある既存の連絡先のメールを取得したいのですが、連絡先の正確なメールを取得できませんでしたが、ランダムなメールを取得できませんでした。このコードを修正するのを手伝ってください。とても感謝しています。

 public void fetchingContacts(Context context) {

            Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
            ContentResolver cr = context.getContentResolver();
            Cursor crsr = cr.query(uri, null, null, null, null);

            crsr.moveToFirst();

            if (crsr.getCount() > 0) {
                while (crsr.moveToNext()) {
                    ID = crsr
                            .getString(crsr
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
                    id = crsr.getString(crsr.getColumnIndex(BaseColumns._ID));
                    NAME = crsr
                            .getString(crsr
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                    NUMBER = crsr
                            .getString(crsr
                                    .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

                    arylist_contact_id.add(ID);
                    arylist_all_number.add(NUMBER);
                    arylist_all_names.add(NAME);
                    // ////////////



                    Cursor emailCur = cr.query(
                            ContactsContract.CommonDataKinds.Email.CONTENT_URI,
                            null, ContactsContract.CommonDataKinds.Email.CONTACT_ID
                                    + " = " + id, null, null);

                    while (emailCur.moveToNext()) {
                        email = emailCur
                                .getString(emailCur
                                        .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));

                        Log.v("fetchingEMAIL ---  ", email);

                    }
                    emailCur.close();


                    Log.v("IN do while :: name and number ", ID + " , id :" + id
                            + "  " + NAME + " : " + NUMBER + "  :  " + email);
                } 

            }
            crsr.close();
        }
4

2 に答える 2

0

これを試して

      Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
    if (cur.getCount() > 0) {
        while (cur.moveToNext()) {
            String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
            Cursor cur1 = cr.query( 
                    ContactsContract.CommonDataKinds.Email.CONTENT_URI, null,
                    ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?", 
                            new String[]{id}, null); 
            while (cur1.moveToNext()) { 
                //to get the contact names
                String name=cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
                Log.e("Name :", name);
                String email = cur1.getString(cur1.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                Log.e("Email", email);

                }
            } 
            cur1.close();
        }
于 2013-01-03T06:29:30.850 に答える