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)
在这里,我可以获得所选用户的电子邮件和名称.我需要获得所选用户的电子邮件,电话号码和姓名,请帮助我.
我之前做过这个,可能会帮助你:
以下是获取联系号码的功能
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)