получить тип электронной почты и тип номера телефона, метка используется Android - PullRequest
10 голосов
/ 04 августа 2011

Я хочу получить тип используемых меток 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;
            }
        }
    }
//.....

Ответы [ 3 ]

18 голосов
/ 30 августа 2011

Общие типы (дом, работа и т. Д.) Хранятся в виде целых. Это позволяет избежать хранения избыточных строк в базе данных и позволяет локализовать. Вы можете найти локализованную строку для 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);
7 голосов
/ 13 февраля 2013

попробуйте код ниже. я могу получить ярлык с номером телефона.

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();   
2 голосов
/ 18 января 2015
type = cursor.getInt(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.TYPE));

getActivity().getResources().getString(ContactsContract.CommonDataKinds.Phone.getTypeLabelResource(type))
...