2011-02-27 22 views
29

मैं एंड्रॉइड डिवाइस का फोन नंबर प्राप्त करना चाहता हूं। मैं इस कोड का उपयोग करें:TelephonyManager.getLine1Number() विफल रहा है?

TelephonyManager tm = (TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 
String phoneNumber= tm.getLine1Number(); 

मेरे फोन (HTC जंगल की आग) मैं फोन नंबर नहीं मिल सकता है पर - सभी मैं रिक्त स्ट्रिंग है। अगर मैं emulatur पर कोड चलाता हूं, तो फोन नंबर सामान्य रूप से दिखाया जाता है।

यदि मैं सेटिंग्स => फ़ोन के बारे में => फ़ोन पहचान-> फोन नंबर पर जाता हूं, तो फोन नंबर "अज्ञात" होता है।

समस्या कहां है? क्या मेरी सिम में कुछ गड़बड़ है?

+1

आपके वास्तविक फोन पर यह कहता है कि आपका फोन नंबर "अज्ञात" है? –

+4

मुझे इसके लिए ग्रोन मिलेंगे, लेकिन क्या एसओ में हर किसी के बारे में फोन नंबर प्राप्त करने में कोई समस्या नहीं है? : डी क्षमा करें, किया जाना था। लेकिन मुझे लगता है कि यह आपके सिम के साथ एक समस्या नहीं है, आपके सेवा प्रदाता ने सक्रियण के दौरान आपके फोन पर नंबर निर्दिष्ट नहीं किया हो सकता है। – Sumit

उत्तर

34

हमें हमारी परियोजना में एक ही समस्या थी। निष्कर्ष यह था कि यह सिम कार्ड पर निर्भर करता है।

हमें क्या हुआ:

  • गैलक्सी एस के साथ एटी & टी सिम कार्ड: फोन नंबर पढ़ सकते हैं, सेटिंग एक यूरोपीय सिम कार्ड के साथ नंबर
  • एक ही आकाशगंगा पता चलता है: संख्या और "अज्ञात नहीं पढ़ सकते हैं "सेटिंग्स में (सेल फोन पूरी तरह कार्यात्मक था, बस संख्या को नहीं पढ़ सका)

यह अन्य मंचों में भी बताया गया है।

अंत में हमने उपयोगकर्ता से फोन नंबर के लिए पूछने का फैसला किया। थोड़ा और शामिल, वास्तव में: if("SIM card present" && "cannot read the cell number") "ask user";। अन्यथा हम उपयोगकर्ता को गले लगाएंगे जो पहले सिम कार्ड नहीं है।

+0

getLine1Number() केवल सिम कार्ड पर संग्रहीत नंबर प्राप्त करें .. बहुत सारे ऑपरेटर वहां सिम नंबर नहीं लिखते हैं ... कुछ फोन (नोकिया, ब्लैकबेरी, कुछ बूढ़े एंड्रॉइड, आईफोन) पर आप अपना मोबाइल नंबर सेट कर सकते हैं और फोन सिम कार्ड पर स्टोर करेगा, उस बिंदु पर getLine1Number() फोन नंबर वापस कर देगा। – andQlimax

+0

@andQlimax यह कैसे करें? –

+0

@ सिबिटपुरी सिम पर नंबर संग्रहीत करने से फोन और एंड्रॉइड संस्करण से निर्भर करता है .. कुछ एंड्रॉइड फोन पर "कॉल सेटिंग्स-> अतिरिक्त सेटिंग्स-> आपका नंबर" के तहत एक विकल्प होता है, जहां आप नंबर सेट कर सकते हैं। आप एपीआई को कॉल करके ऐसा नहीं कर सकते हैं, यह फोन रोम – andQlimax

5

सिम कार्ड स्टोर फ़ोन नंबर और इसे आपके द्वारा संपादित किया जा सकता है। एंड्रॉइड के लिए कहें, लेकिन डब्ल्यूएम पर आप आसानी से अपने फोन नंबर को संपादित कर सकते हैं, जो सिम कार्ड पर संग्रहीत है। बेशक, इसका मतलब यह नहीं है कि आप फ्लाई पर अपना फोन नंबर बदल सकते हैं। असल में, आप अपनी पसंद के किसी भी नंबर को लिखने के लिए स्वतंत्र हैं, और कार्यक्रमों का मानना ​​है कि यह आपका असली नंबर है :)

+3

यहां तक ​​कि कुछ लोग -1 आप पर भी सही हैं। – andQlimax

+1

@trashkalmar: कोई ऐसा कैसे कर सकता है? क्या यह गैर रूट वाले फोनों में भी संभव है? मुझे लगता है कि फोन के rooting के साथ इसका कोई लेना-देना नहीं है? –

+1

मुझे यकीन है कि एंड्रॉइड पर यह संभव है, लेकिन मैंने इसे विंडोज मोबाइल पर किया है। शायद, कुछ एटी कमांड मौजूद है। – trashkalmar

2

जब मैंने एक नए फोन में सिम कार्ड ले जाया है, तो मुझे कभी-कभी पता चला है कि फ़ोन नंबर सेटिंग में नहीं दिखता है -> फोन के बारे में -> स्थिति -> मेरा फोन नंबर।

मेरे डेटा बिंदुओं:

  • एटी & टी Atrix इसमें पूरी तरह से नया सिम डाल कहते हैं, "आवाज MSISDN लाइन 1 अशक्त"।
  • टी-मोबाइल जी 1 इसमें नया सिम कार्ड डालकर सही ढंग से फोन नंबर प्रदर्शित करता है।
  • टी-मोबाइल जी 2 मेरे पुराने जी 1 से सिम कार्ड चल रहा है "अज्ञात" कहता है।
0

सिम कार्ड की अनुमति मिलने पर टेलीफोन नंबर उपलब्ध है। हमारी कंपनी में मुझे केवल एक सिम मिला, जिसे नंबर प्राप्त करने की अनुमति है। मैं इस सिम को सभी एंड्रॉइड डिवाइस पर टेस्ट कर रहा हूं। सब ठीक है। getLine1Number() ठीक है। अब मैं अन्य सिम के लिए फोन नंबर ढूंढ रहा हूं। हमारे एसएमएस सर्वर या अन्य एंड्रॉइड डिवाइस (एसएमएस की प्रसंस्करण के साथ) एसएमएस भेजें

11

फोन नंबर के बजाय सिम कार्ड सीरियल नंबर का उपयोग करें, जो हमेशा मौजूद है और हमेशा वैध मान है।

telephonyManager.getSimSerialNumber(); 

सिम सीरियल नंबर कम से कम ऑपरेटर के भीतर अद्वितीय है।तो

telephonyManager.getNetworkOperator(); 

के साथ संयुक्त आप एक देश के भीतर एक ग्राहक के लिए एक अद्वितीय पहचानकर्ता होगा।

यह

telephonyManager.getNetworkCountryIso(); 

आप एक ग्राहक के लिए एक विश्व स्तर पर अद्वितीय पहचानकर्ता होगा के साथ संयुक्त।

आशा है कि इससे मदद मिलेगी।

चीयर्स।

+1

क्या होगा यदि उपयोगकर्ता के पास सिम कार्ड नहीं है या आपके पास एकाधिक सिम कार्ड हैं? – bitek

+0

फिर स्पष्ट रूप से यह विधि काम नहीं करेगी। यदि आप डिवाइस के लिए ऐप बनाना चाहते हैं तो आपको अपने ऐप के लिए एक अलग अद्वितीय पहचानकर्ता की तलाश करनी होगी, किसी कारण से सिम नहीं है (जैसे टैबलेट का बहुमत)। टेलीफोनी प्रबंधक कई सिम्स के लिए पूरा करता है –

0

मैं एक सिमकार्ड का उपयोग करता हूं जो केवल डेटा स्थानांतरण की अनुमति देता है। यह फोन कॉल की अनुमति नहीं देता है।

जब मैं getLine1Number() के साथ फोननंबर प्राप्त करने का प्रयास करता हूं, तो मुझे खाली स्ट्रिंग मिलती है।

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