我正在尝试从Android(2.0.1)上的联系人处获取电子邮件。我收不到电子邮件。我正在使用的代码是:
String columns = new String[]{ContactsContract.Data._ID,
ContactsContract.Data.DATA1,
ContactsContract.Data.DATA2,
ContactsContract.Data.DATA3,
ContactsContract.Data.DATA4,
ContactsContract.Data.DATA5,
ContactsContract.Data.DATA6,
ContactsContract.Data.DATA7,
ContactsContract.Data.DATA8,
ContactsContract.Data.DATA9
};
Cursor cursor = contentResolver.query(ContactsContract.Data.CONTENT_URI, columns, null, null, null);
当我尝试获取列的值时,我得到null。我怎样才能收到这些电子邮件?也许CONTENT_URI不正确或数据存储在另一个表中,我必须进行连接。
答案 0 :(得分:2)
我这样做了:
Cursor emailCur = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);
while (emailCur.moveToNext()) {
String email = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
String emailType = emailCur.getString(emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
}
emailCur.close();
工作正常。我希望它对另一个人有所帮助。
答案 1 :(得分:1)
我是这样做的,
String id = contactData.getLastPathSegment();
Cursor emailsCur = getContentResolver().query(Email.CONTENT_URI, null,
Email.CONTACT_ID + " = " + id, null, null);
while (emailsCur.moveToNext()) {
String email = emailsCur.getString(emailsCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
}
emailsCur.close();
我希望它会对你有所帮助。
答案 2 :(得分:0)
ContactsContract.CommonDataKinds.Email.DATA?
http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html
答案 3 :(得分:0)
我用这种方式解决了问题:
private static final int SUBACTIVITY_VIEW_CONTACT = 2;
.
.
.
Intent viewContactActivity = new Intent(Intent.ACTION_VIEW, data.getData());
startActivityForResult(viewContactActivity , SUBACTIVITY_VIEW_CONTACT);
.
.
.
然后我可以在屏幕上看到联系人的所有电子邮件,就像我在联系人应用程序上单击联系人本身一样,但是当我点击任何电子邮件时,它显示为“不支持的操作。”操作是目前不支持“屏幕。有人知道吗? 感谢。