2010-08-24 32 views
6

Khi thay đổi ngôn ngữ tùy chỉnh, nhãn của các loại điện thoại sẽ thay đổi thành ngôn ngữ thích hợp. Có ai biết làm thế nào để có được nhãn địa phương của các loại điện thoại?cách nhận nhãn địa phương của các loại điện thoại?

Tôi chọn một liên hệ trong ứng dụng của mình để nhận số điện thoại và nếu có nhiều thì một số tôi sử dụng AlertDialog để cho phép người dùng chọn một số điện thoại. Trong danh sách chọn này, tôi muốn hiển thị nhãn của loại, do đó người dùng dễ dàng chọn. Vì nhãn của chúng ở đâu đó trong hệ thống Android, bạn phải có khả năng nhận nhãn được bản địa hóa. Thật không may, Phone.LABEL là null khi đọc số điện thoại.

+1

Quaerite, et invenietis : Chuỗi [] s = android.content.res.Resources.getSystem() .getStringArray (android.R.array.phoneTypes); – infero

Trả lời

17

Tôi biết đây là một chút cũ, nhưng điều này:

Phone.getTypeLabel(this.getResources(), cursor.getInt(typeIdx), ""); 

làm việc cho tôi

+0

Điều này cũng phù hợp với tôi. – Maurice

+0

Điều này cũng phù hợp với tôi. – PhatHV

+0

không may không phải cho nhãn tùy chỉnh. –

1

Câu trả lời của câu hỏi là câu trả lời hợp lệ và tôi rất vui khi tìm thấy câu trả lời này vì câu trả lời này giống với câu trả lời của tôi. Tuy nhiên, nếu bạn đang xử lý các điện thoại được cài đặt API cấp 5 (Android 2.0) hoặc mới hơn, có một vấn đề nhỏ với điều này: android.R.array.phoneTypes chỉ trả về danh sách các loại điện thoại đã có trước khi ContactsContract thay thế giao diện Contacts Cấp API 5. Tôi đã xác minh các nhãn được liệt kê khi tạo một liên hệ mới trên trình giả lập chạy các phiên bản Android này (API): 1.6 (4), 2.1-update 1 (7) và 2.2 (8).

Khi in ra, android.R.array.phoneTypes chứa các loại hợp lệ Điện thoại:
đình, di động, làm việc, Fax làm việc, fax nhà riêng, Pager, Khác, Custom

Đây là những loại điện thoại hợp lệ, hiện tại cho điện thoại có cài đặt Android 2.0 trở lên, bị thiếu từ cùng một mảng:
Gọi lại, Ô tô, Công ty chính, ISDN, Chính, Fax khác, Radio, Telex, TTY TDD, Di động công việc, Máy nhắn tin công việc, Trợ lý, MMS

Thật không may, tôi h ave không thể tìm thấy thứ gì đó như android.R.array.phoneTypes sẽ liệt kê tất cả các loại điện thoại hợp lệ này cho điện thoại Android 2.0+. Có ai đi qua như vậy chưa?

Tài liệu tham khảo

android.R.array.phoneTypes định nghĩa: http://developer.android.com/reference/android/R.array.html#phoneTypes

Lưu ý: Tôi gửi bài hai liên kết tài liệu tham khảo khác của tôi trong câu trả lời riêng biệt, như tôi dường như không thể gửi nhiều hơn một siêu liên kết cho mỗi bài đăng tại thời gian này.

+0

Các loại điện thoại hợp lệ trước Android 2.0 (pre-'ContactsContract'): http://developer.android.com/reference/android/provider/Contacts.PhonesColumns.html –

+0

Các loại điện thoại hợp lệ cho Android 2.0 trở lên: http: // developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html –

1

tôi đang sử dụng đoạn mã này

public void getPhoneType(){ 
    int res; 
    for(int i=0;i<=20;i++){ 
     res = ContactsContract.CommonDataKinds.Phone.getTypeLabelResource(i); 
     Log.d(TAG,"i: "+ i +" type: " + context.getString(res)); 
    } 
} 

không tìm thấy bất cứ nơi nào để có được số lượng thực tế của các loại hợp lệ nhưng http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html#getTypeLabelResource%28int%29 nói rằng nó sẽ luôn cung cấp cho một res hợp lệ như vậy, bạn có thể lặp lại cho đến khi nó bắt đầu đưa ra các giá trị lặp lại ... với tôi sau 20 cho tôi tùy chỉnh res.

1

Có, bạn có thể nhận được bản địa hoá chuỗi loại điện thoại với mã:

int phoneNumberType = (int)pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
ContactsContract.CommonDataKinds.Phone.getTypeLabel(context.getResources(), phoneNumberType , "") 

nhưng với nhiều loại điện thoại tùy chỉnh, bạn nên cosider nhãn điện thoại, không chỉ loại điện thoại:

String phoneLabel = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.LABEL)); 
+0

Câu trả lời hoàn hảo. Gọn gàng và chính xác Cảm ơn. –

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