Получить тип электронной почты и номер телефона, на котором указан тип телефона
Я хочу получить тип используемого ярлыка email type
и phone number type's
, но когда я получаю данные, используя этот код, его позиция для обозначения использования меток возвращает значение integer
, но я хочу использовать метку.
Где я ошибаюсь в своем коде?
Успешное полное получение идентификатора электронной почты, но для ввода типа int
. значение равно 1,2.
Итак, как получить метку для типа?
public String [] getEmailid(long _id) {
String emailid = null ;
String emailType = null ;
try {
Cursor cursor = getContentResolver().query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
new String[]{Email.DATA,Email.TYPE},
ContactsContract.CommonDataKinds.Email.CONTACT_ID +" = "+ _id,
// We need to add more selection for phone type
null,
null);
if(cursor != null) {
while (cursor.moveToNext()) {
// This would allow you get several email addresses
// if the email addresses were stored in an array
// Log.i("RETURN EMAIL TYPA",emailid);
emailid = cursor.getString(cursor.getColumnIndex(Email.DATA));
emailType = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
// TODO Auto-generated method stub
if(emailid != null)
break;
}
}
}
//.....
Ответы
Ответ 1
Общие типы (домашний, рабочий и т.д.) сохраняются как int. Это позволяет избежать избыточных строк в базе данных и позволяет локализовать. Вы можете найти локализованную строку для общего типа int со следующим API:
http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html#getTypeLabel(android.content.res.Resources,%20int,%20java.lang.CharSequence)
Обратите внимание, что когда тип TYPE_CUSTOM, вам необходимо предоставить пользовательскую метку. Вот пример:
int type = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
String customLabel = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.LABEL));
CharSequence emailType = ContactsContract.CommonDataKinds.Email.getTypeLabel(context.getResources(), type, customLabel);
Ответ 2
попробуйте ввести код ниже. Я могу получить ярлык с номером телефона.
Uri uri = ContactsContract.Contacts.CONTENT_URI;
ContentResolver cr = getContentResolver();
String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC";
Cursor cur=cr.query(uri, null, null, null, sortOrder);
if(cur.getCount()>0){
while(cur.moveToNext()){
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)))> 0) {
//get the phone number
Cursor phoneCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",new String[]{id}, null);
while (phoneCur.moveToNext()) {
String phoneNumber= phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
int phonetype = phoneCur.getInt(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
String customLabel = phoneCur.getString(phoneCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL));
String phoneLabel = (String) ContactsContract.CommonDataKinds.Email.getTypeLabel(this.getResources(), phonetype, customLabel);
Log.e(TAG, "Phone Number: " + phoneNumber + " Selected Phone Label: " + phoneLabel);
}phoneCur.close();
}
}
} cur.close();
Ответ 3
type = cursor.getInt(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.TYPE));
getActivity().getResources().getString(ContactsContract.CommonDataKinds.Phone.getTypeLabelResource(type))