2010-08-24 35 views
6

कस्टम लोकेल बदलते समय फोन प्रकारों का लेबल उचित भाषा में बदल जाता है। क्या किसी को पता है कि फोन प्रकार के स्थानीय लेबल को कैसे प्राप्त किया जाए?फोन के प्रकार के स्थानीय लेबल को कैसे प्राप्त करें?

मैं अपने फोन नंबर प्राप्त करने के लिए अपने ऐप में एक संपर्क चुनता हूं और यदि कोई और नंबर है तो मैं एक अलर्टडिअलॉग का उपयोग करता हूं ताकि उपयोगकर्ता को सही चयन कर सकें। इस पिक सूची में, मैं इस प्रकार के लेबल को दिखाना चाहता हूं, इसलिए उपयोगकर्ता के चयन के लिए यह आसान है। चूंकि वे एंड्रॉइड सिस्टम में लेबल कहीं भी हैं, इसलिए स्थानीयकृत लेबल प्राप्त करना संभव होना चाहिए। दुर्भाग्यवश, फोन नंबर पढ़ने पर फ़ोन.LABEL शून्य है।

+1

Quaerite, एट invenietis : स्ट्रिंग [] एस = android.content.res.Resources.getSystem() .getStringArray (android.R.array.phoneTypes); – infero

उत्तर

17

मैं जानता हूँ कि यह एक सा पुराना है, लेकिन इस:

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

मुझे

+0

यह मेरे लिए भी काम करता है। – Maurice

+0

यह मेरे लिए भी काम करता है। – PhatHV

+0

दुर्भाग्य से कस्टम लेबल के लिए नहीं। –

1

इन्फर्नो का उत्तर एक वैध उत्तर है, और मुझे यह जवाब मिलकर खुशी हुई क्योंकि यह वही था जो मैं ढूंढ रहा था। हालांकि, यदि आप एपीआई लेवल 5 (एंड्रॉइड 2.0) या नए के साथ स्थापित फोन से निपट रहे हैं, तो इसमें एक छोटी सी समस्या है: android.R.array.phoneTypes केवल ContactsContract कक्षा Contacts इंटरफ़ेस को प्रतिस्थापित करने के पहले मौजूद फ़ोन प्रकारों की सूची लौटाता है एपीआई स्तर 5 के। मैंने इन एंड्रॉइड संस्करणों (एपीआई स्तर) चलाने वाले अनुकरणकों पर एक नया संपर्क बनाते समय सूचीबद्ध लेबलों की पुष्टि की: 1.6 (4), 2.1-अपडेट 1 (7), और 2.2 (8)।

जब बाहर मुद्रित, android.R.array.phoneTypes इन वैध फ़ोन प्रकार होते हैं:
होम, मोबाइल, कार्य, कार्य फ़ैक्स, होम फैक्स, पेजर, अन्य, कस्टम

ये वैध फ़ोन प्रकार, के लिए मौजूद हैं एंड्रॉइड 2.0+ के साथ फोन, जो उसी ऐरे से गायब हैं,
कॉलबैक, कार, कंपनी मुख्य, आईएसडीएन, मुख्य, अन्य फैक्स, रेडियो, टेलेक्स, टीटीवी टीडीडी, वर्क मोबाइल, वर्क पेजर, सहायक, एमएमएस

दुर्भाग्य से, मैं एच android.R.array.phoneTypes जैसे कुछ खोजने में सक्षम नहीं है जो एंड्रॉइड 2.0+ फोन के लिए इन सभी वैध फोन प्रकारों को सूचीबद्ध करेगा। क्या कोई अभी तक इस तरह से आया है?

संदर्भ

android.R.array.phoneTypes परिभाषित: http://developer.android.com/reference/android/R.array.html#phoneTypes

नोट: मैं अलग जवाब में मेरे अन्य दो संदर्भ लिंक पोस्ट कर रहा हूँ, जैसा कि मैंने पर पोस्ट प्रति एक से अधिक हाइपरलिंक पोस्ट करने के लिए नहीं कर पा रहे इस समय।

+0

मान्य फोन प्रकार प्री-एंड्रॉइड 2.0 (प्री-कॉन्टैक्ट्स कॉन्ट्रैक्ट'): http://developer.android.com/reference/android/provider/Contacts.PhonesColumns.html –

+0

Android 2.0+ के लिए मान्य फ़ोन प्रकार: http: // developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html –

1

मैं कोड के इस टुकड़े का उपयोग कर रहा के लिए काम किया

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)); 
    } 
} 

किसी भी स्थान नहीं मिला था वैध प्रकारों की वास्तविक गणना प्राप्त करने के लिए, लेकिन http://developer.android.com/reference/android/provider/ContactsContract.CommonDataKinds.Phone.html#getTypeLabelResource%28int%29 कहता है कि यह हमेशा एक वैध रेज देगा, इसलिए जब तक यह दोहराए गए मूल्यों को शुरू नहीं कर देता तब तक आप इसे फिर से चालू कर सकते हैं ... मेरे बाद 20 मुझे कस्टम रेज देता है।

1

कोड के साथ हाँ, आप स्थानीय प्राप्त कर सकते हैं फोन प्रकार स्ट्रिंग:

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

लेकिन कस्टम फ़ोन प्रकार के लिए आप फोन लेबल cosider चाहिए, न केवल फोन के प्रकार:

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

बिल्कुल सही जवाब। संक्षिप्त और सटीक। धन्यवाद। –

संबंधित मुद्दे