Obtuve la mayoría de las cosas cuando consulté los datos de contacto. Estoy peleando con StructuredName y Organization. No funcionan para miProblemas con ContactsContract.CommonDataKinds.StructuredName
Si no te importa, echa un vistazo al código. Está hecho a mano y se elimina una gran cantidad de errores de verificación para que sea lo más pequeño posible que se publicará aquí. Los comentarios con "no funcionan" son las partes que no funcionan para mí.
Los dos If() principales son parte del onActivityResult donde recibo los datos al final de la selección del contacto. La llamada se realiza con:
intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, Main.DIALOG_PICKCONTACT);
Muchas gracias de antemano HJW
if (requestCode == Main.DIALOG_PICKCONTACT) {
if (resultCode == RESULT_OK) {
int i;
String s;
Cursor cursorContacts = managedQuery(intent.getData(),
null,
null,
null,
null);
if (cursorContacts != null) {
if (cursorContacts.moveToNext()) {
ContentResolver contentResolver = getContentResolver();
String contactId = cursorContacts.getString(cursorContacts.getColumnIndex(ContactsContract.Contacts._ID));
i = cursorContacts.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
// cursorContacts.getString(i); *** is DISPLAY_NAME
Cursor cursorEmail = contentResolver.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[] { contactId },
null);
if (cursorEmail != null) {
while (cursorEmail.moveToNext()) {
int type = cursorEmail.getInt(cursorEmail.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
s = cursorEmail.getString(cursorEmail.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
switch (type) {
case ContactsContract.CommonDataKinds.Email.TYPE_HOME:
// s *** is private Email
break;
case ContactsContract.CommonDataKinds.Email.TYPE_WORK:
// s *** is business Email
break;
}
}
cursorEmail.close();
}
Cursor cursorOrganization = contentResolver.query(
ContactsContract.Data.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Organization.CONTACT_ID + " = ?",
new String[] { contactId },
null);
if (cursorOrganization != null) {
if (cursorOrganization.moveToNext()) {
s = cursorOrganization.getString(cursorOrganization.getColumnIndex(ContactsContract.CommonDataKinds.Organization.DATA));
// s *** Company name not working
s = cursorOrganization.getString(cursorOrganization.getColumnIndex(ContactsContract.CommonDataKinds.Organization.TITLE));
// s *** Function within company not working
}
cursorOrganization.close();
}
s = cursorContacts.getString(cursorContacts.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
if (Integer.parseInt(s) > 0) {
Cursor cursorPhone = contentResolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
new String[] { contactId },
null);
if (cursorPhone != null) {
while (cursorPhone.moveToNext()) {
int type = cursorPhone.getInt(cursorPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
s = cursorPhone.getString(cursorPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
switch (type) {
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME:
// s *** is private fax
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK:
// s *** is business fax
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
// s *** is private phone
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
// s *** is mobile phone
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
// s *** is business phone
break;
case ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE:
// s *** is business mobile
break;
}
}
cursorPhone.close();
}
}
Cursor cursorStructuredName = contentResolver.query(
ContactsContract.Data.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.StructuredName.CONTACT_ID + " = ?",
new String[] { contactId },
null);
if (cursorStructuredName != null) {
if (cursorStructuredName.moveToNext()) {
i = cursorStructuredName.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);
// cursorStructuredName.getString(i); *** given name not working
i = cursorStructuredName.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.MIDDLE_NAME);
// cursorStructuredName.getString(i); *** middle name not working
i = cursorStructuredName.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.PREFIX);
// cursorStructuredName.getString(i); *** prefix not working
i = cursorStructuredName.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.SUFFIX);
// cursorStructuredName.getString(i); *** suffix not working
}
cursorStructuredName.close();
}
Cursor cursorStructuredPostal = contentResolver.query(
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.StructuredPostal.CONTACT_ID + " = ?",
new String[] { contactId },
null);
if (cursorStructuredPostal != null) {
while (cursorStructuredPostal.moveToNext()) {
int type = cursorStructuredPostal.getInt(cursorStructuredPostal.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.TYPE));
s = cursorStructuredPostal.getString(cursorStructuredPostal.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY));
switch (type) {
case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME:
//s *** is private country
break;
case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK:
// s *** is business country
break;
}
s = cursorStructuredPostal.getString(cursorStructuredPostal.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));
switch (type) {
case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME:
// s *** is private city
break;
case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK:
// s *** is business city
break;
}
s = cursorStructuredPostal.getString(cursorStructuredPostal.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));
switch (type) {
case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME:
// s *** is private postcode
break;
case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK:
// s *** is business postcode
break;
}
s = cursorStructuredPostal.getString(cursorStructuredPostal.getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));
switch (type) {
case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_HOME:
// s *** is private street
break;
case ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK:
// s *** is business street
break;
}
}
cursorStructuredPostal.close();
}
Cursor cursorWebsite = contentResolver.query(
ContactsContract.Data.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Website.CONTACT_ID + " = ?",
new String[] { contactId },
null);
if (cursorWebsite != null) {
while (cursorWebsite.moveToNext()) {
i = cursorWebsite.getColumnIndex(ContactsContract.CommonDataKinds.Website.URL);
int type = cursorWebsite.getColumnIndex(ContactsContract.CommonDataKinds.Website.CONTENT_ITEM_TYPE);
s = cursorWebsite.getString(i);
switch (type) {
case ContactsContract.CommonDataKinds.Website.TYPE_HOME:
// s *** private url not working
break;
case ContactsContract.CommonDataKinds.Website.TYPE_WORK:
// s *** business url not working
break;
}
}
cursorWebsite.close();
}
}
cursorContacts.close();
}
}
}
Hola, Buen trabajo .. ¿Tienes la solución para obtener datos de la Organización? Gracias por adelantado. –