选择号码,电子邮件ID和android中的联系人姓名

jit*_*thu 0 email android contacts phone-number

我正在与手机联系人合作.当我点击按钮并获取所有联系信息,如姓名,电子邮件和电话号码时,我想从联系人列表中选择联系人.我只是收到了电子邮件和联系人姓名,但无法获取电话号码.我的代码在下面给出.

             Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,Contacts.CONTENT_URI);
                            startActivityForResult(contactPickerIntent, PICK_CONTACT);
                     }
             });
     }

     @Override
     public void onActivityResult(int reqCode, int resultCode, Intent data) {


           if (resultCode == RESULT_OK) {
                switch (reqCode) 
                {
                case PICK_CONTACT:
                    Cursor cursor = null;
                    String email = "", name = "";
                    try {
                        Uri result = data.getData();
                        //Log.v(DEBUG_TAG, "Got a contact result: " + result.toString());

                        // get the contact id from the Uri
                        String id = result.getLastPathSegment();

                        // query for everything email
                        cursor = getContentResolver().query(Email.CONTENT_URI,  null, Email.CONTACT_ID + "=?", new String[] { id }, null);

                        int nameId = cursor.getColumnIndex(Contacts.DISPLAY_NAME);

                        int emailIdx = cursor.getColumnIndex(Email.DATA);


                        if (cursor.moveToFirst()) {
                            email = cursor.getString(emailIdx);
                            name = cursor.getString(nameId);

                        } else {
                           // Log.w(DEBUG_TAG, "No results");
                        }
                    } catch (Exception e) {
                       // Log.e(DEBUG_TAG, "Failed to get email data", e);
                    } finally {
                        if (cursor != null) {
                            cursor.close();
                        }

                        System.out.println(email);
                        System.out.println(name);
                        if (email.length() == 0 && name.length() == 0) 
                        {
                            Toast.makeText(this, "No Email for Selected Contact",Toast.LENGTH_LONG).show();
                        }
                    }
                    break;
                }

            } else {

            }
        }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我可以获得所选用户的电子邮件和名称.我需要获得所选用户的电子邮件,电话号码和姓名,请帮助我.

Mir*_*iya 6

我之前做过这个,可能会帮助你:

以下是获取联系号码的功能

public void queryAllPhoneNumbersFromContacts(int contactId, List<ListViewEntry> content) {
        final String[] projection = new String[] {
                Phone.NUMBER,
                Phone.TYPE,
        };

        final Cursor phone = managedQuery(
                Phone.CONTENT_URI,  
                projection,
                Data.CONTACT_ID + "=?",
                new String[]{String.valueOf(contactId)},
                null);

        if(phone.moveToFirst()) {
            final int contactNumberColumnIndex = phone.getColumnIndex(Phone.NUMBER);
            final int contactTypeColumnIndex = phone.getColumnIndex(Phone.TYPE);

            while(!phone.isAfterLast()) {
                final String number = phone.getString(contactNumberColumnIndex);
                final int type = phone.getInt(contactTypeColumnIndex);
                content.add(new ListViewEntry(number, Phone.getTypeLabelResource(type),R.string.type_phone));
                phone.moveToNext();
            }

        }
        phone.close();
    }
Run Code Online (Sandbox Code Playgroud)

以下是获取电子邮件ID的功能

    public void queryAllEmailAddressesFromContacts(int contactId, List<ListViewEntry> content) {
    final String[] projection = new String[] {
            Email.DATA,                         // use Email.ADDRESS for API-Level 11+
            Email.TYPE
    };

    final Cursor email = managedQuery(
            Email.CONTENT_URI,  
            projection,
            Data.CONTACT_ID + "=?",
            new String[]{String.valueOf(contactId)},
            null);

    if(email.moveToFirst()) {
        final int contactEmailColumnIndex = email.getColumnIndex(Email.DATA);
        final int contactTypeColumnIndex = email.getColumnIndex(Email.TYPE);

        while(!email.isAfterLast()) {
            final String address = email.getString(contactEmailColumnIndex);
            final int type = email.getInt(contactTypeColumnIndex);
            content.add(new ListViewEntry(address, Email.getTypeLabelResource(type),R.string.type_email));
            email.moveToNext();
        }

    }
    email.close();
}
Run Code Online (Sandbox Code Playgroud)

string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="type_phone">Phone Number</string>
    <string name="type_email">E-Mail</string>
</resources>
Run Code Online (Sandbox Code Playgroud)