2011-04-13 4 views
17

मैं एक ऐप विकसित कर रहा हूं जिसके लिए आईएमएसआई प्राप्त करना आवश्यक है। मैं उपयोग करता हूं:एंड्रॉइड फोन से आईएमएसआई प्राप्त कर रहा है?

TelephonyManager mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
String imsi = mTelephonyMgr.getSubscriberId(); 

यह ज्यादातर फोन के लिए काम करता है, लेकिन कुछ हैंडसेट केवल 15 अंकों के बजाय 6 अंक लौटाते हैं। जो गलत है।

कोई भी आईएमएसआई प्रोग्रामेटिक रूप से पुनर्प्राप्त करने का एक वैकल्पिक तरीका जानता है? अन्य एपीआईएस? तरीकों?

सादर

+0

खैर, यह पता चला कि कुछ Android हैंडसेट पूर्ण IMSI (बग) नहीं लौटाते हैं। मैंने सिम से आईएमसी निकालने के लिए कुछ विशेष हार्डवेयर का इस्तेमाल किया और यह पूर्ण आईएमआई निकाला, जिसका मतलब है कि सिम ठीक था। इस प्रकार, समस्याएं पूर्ण आईएमएसआई निकालने में असमर्थ हैं। मुझे सोनी एरिक्सन मिनी एक्सपीरिया में यह बग मिला। – omega

उत्तर

7

this post के अनुसार आप

String imsi = android.os.SystemProperties.get(android.telephony.TelephonyProperties.PROPERTY_IMSI); 

उपयोग कर सकते हैं लेकिन SystemProperties सीधा नहीं पहुंचा है, तो आप इस सवाल के जवाब में चाल से एक का उपयोग करने की आवश्यकता होगी: Where is android.os.SystemProperties

आपको SystemProperties source की भी आवश्यकता हो सकती है।

+0

मैं कक्षा 'android.telephony.TelephonyProperties', केवल' com.android.internal.telephony.TelephonyProperties' के किसी भी उल्लेख को पाने में असमर्थ था, लेकिन वहां कोई 'PROPERTY_IMSI' स्थिर नहीं है। –

5

पहले: विकी से

एक IMSI आम तौर पर एक 15 अंकों लंबे संख्या के रूप में प्रस्तुत किया जाता है, लेकिन एक पुराने IMSI मॉडल है कि 14 अंक था के लिए कम

कम संदर्भित करता है हो सकता है । इसे यहाँ प्रासंगिक

दूसरा नहीं है: यह हैंडसेट पर बल्कि नेटवर्क पर नहीं निर्भर करता है

यह 6 अंक देता है क्योंकि उस विशेष हैंडसेट पर एंड्रॉयड सॉफ्टवेयर केवल गैर-व्यक्तिगत पहचान हिस्सा वापस जाने के लिए कॉन्फ़िगर किया गया है आईएमसीआई - देश और नेटवर्क ऑपरेटर को परिभाषित करने वाले पहले 6 अंक

3

यह कोड मेरी प्रोजेक्ट में अच्छी तरह से काम करता है।

TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); 
String imsi = telephonyManager.getSubscriberId(); 

और अनुमति के लिए मत भूलना:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
+2

जबकि मैं आपको एसओ पर सक्रिय होने के लिए प्रोत्साहित करता हूं, यह 4 साल पहले पूछे गए एक प्रश्न का उत्तर है। साथ ही, आपका उत्तर मौजूदा उत्तरों में कोई भी नया बकाया तत्व नहीं लाता प्रतीत होता है और लेखक द्वारा मूल प्रश्न को ध्वजांकित किया गया है। सॉफ्टवेयर और एसओ तेजी से विकसित हो रहे हैं, कृपया उत्तर देने के लिए नए प्रश्न या अनुत्तरित प्रश्नों को देखने पर विचार करें। –

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