2011-08-04 35 views
10

Tôi muốn tìm nạp loại nhãn email typephone number type's được sử dụng nhưng khi tìm nạp dữ liệu bằng cách sử dụng mã này, vị trí sử dụng nhãn của nó có nghĩa là trả về giá trị integer. nhãn được sử dụng.nhận được loại email và loại số điện thoại của nhãn được sử dụng android

Trường hợp tôi sai trong mã của tôi?

Nhận đầy đủ id email thành công nhưng đối với loại tặng int. giá trị là 1,2.

Vậy làm cách nào để nhận nhãn cho loại?

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; 
      } 
     } 
    } 
//..... 

Trả lời

18

Các loại phổ biến (nhà riêng, cơ quan, v.v.) được lưu trữ dưới dạng int. Điều này tránh giữ các chuỗi thừa trong cơ sở dữ liệu và cho phép bản địa hóa. Bạn có thể tìm kiếm các chuỗi địa hoá cho các loại phổ biến của int với các API sau:

http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Email.html#getTypeLabel(android.content.res.Resources,%20int,%20java.lang.CharSequence)

Lưu ý rằng khi loại là TYPE_CUSTOM, bạn cần phải cung cấp nhãn tùy chỉnh. Dưới đây là ví dụ:

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

thử bên dưới mã. tôi có thể nhận được Nhãn với số điện thoại.

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
type = cursor.getInt(cursor.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.TYPE)); 

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

Vui lòng thêm một số giải thích lý do tại sao và làm thế nào điều này giải quyết câu hỏi của OP. –

Các vấn đề liên quan