दिलचस्प पोस्ट
इनलाइन तत्वों की चौड़ाई को निर्धारित करना क्या ऑनलाइन दलाल एपीआई प्रदान करते हैं? साझा पॉइंटर्स कैसे काम करते हैं? क्यों pthread_cond_wait नकली जाली है? इसे पारित करने में क्या अंतर है। किसी भी <int> () और इसका मान। किसी भी <int> () एक विधि सेटअप एचवीक्यूएल – पेजिंग के लिए पंक्ति पहचानकर्ता एमके एन्नेटेशन के उपशीर्षक के लिए पाठ की 2 लाइनें कैसे प्रदर्शित करें और दाईं ओर के बटन के लिए छवि को परिवर्तित करें? प्रमाणीकरण त्रुटियों के बाद मैं PrimeFaces AJAX का उपयोग कर एक पाठ फ़ील्ड कैसे आबाद कर सकता हूं? प्रति प्रक्रिया स्मृति और CPU उपयोग को ट्रैक करने के लिए PerformanceCounter का उपयोग करना? सभी पहले से खोले हुए बच्चे की खिड़कियों के संदर्भों को कैसे प्राप्त करें बाहरी संबंध और आंतरिक संबंध क्या है? एंड्रॉइड एसडीके के लिए फास्ट बिटमैप ब्लर गूगल मैप्स एपीआई v3.19 इंटरनेट एक्सप्लोरर क्वेरक्स मोड में टूटी हुई है Windows के लिए GitHub क्लाइंट के साथ PATH में Git इंस्टॉल करना क्यूटी प्रोजेक्ट में ओपनएसएसएल को कैसे शामिल करें

प्रोग्रामर एंड्रॉइड फोन के फोन नंबर प्राप्त करें

मैं अपने एंड्रॉइड ऐप को चला रहे डिवाइस के फोन नंबर को कैसे प्रोग्राम कर सकता / सकती हूं?

Solutions Collecting From Web of "प्रोग्रामर एंड्रॉइड फोन के फोन नंबर प्राप्त करें"

कोड:

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); 

आवश्यक अनुमति:

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

चेतावनियां:

अत्यधिक अपवादित टिप्पणियों के अनुसार, कुछ चेतावनियां हैं, जिनके बारे में पता होना चाहिए। यह null या "" या यहां तक ​​कि "???????" , और यह एक बासी फोन नंबर वापस कर सकता है जो अब मान्य नहीं है। यदि आप ऐसा कुछ करना चाहते हैं जो विशिष्ट रूप से उपकरण की पहचान करता है, तो आपको इसके बजाय getDeviceId() उपयोग करना चाहिए।

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

मुझे पता है कि यह दर्द है, लेकिन सबसे अधिक संभावना है कि सबसे अच्छा समाधान सिर्फ उपयोगकर्ता को अपने फ़ोन नंबर को एक बार दर्ज करने और उसे स्टोर करने के लिए कहने के लिए है।

अपडेट: यह जवाब अब उपलब्ध नहीं है क्योंकि वॉट्स ने फ़ोन नंबर को खाता नाम के रूप में उजागर कर दिया था, कृपया इस उत्तर की उपेक्षा करें।

वास्तव में एक वैकल्पिक समाधान है जिसे आप पर विचार करना चाह सकते हैं, अगर आप इसे टेलीफोनी सेवा के माध्यम से नहीं प्राप्त कर सकते हैं

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

अनुमति:

 <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

कोड:

 AccountManager am = AccountManager.get(this); Account[] accounts = am.getAccounts(); for (Account ac : accounts) { String acname = ac.name; String actype = ac.type; // Take your time to look at all available accounts System.out.println("Accounts : " + acname + ", " + actype); } 

WhatsApp खाते के लिए एक्टिवाई देखें

 if(actype.equals("com.whatsapp")){ String phoneNumber = ac.name; } 

बेशक आप इसे प्राप्त नहीं कर सकते हैं अगर उपयोगकर्ता ने वॉट्स इंस्टॉल नहीं किया है, लेकिन वैसे भी प्रयास करने के लिए इसके लायक है। और याद रखना चाहिए कि आपको हमेशा पुष्टिकरण के लिए उपयोगकर्ता पूछना चाहिए।

जैसा कि मेरे पहले उत्तर में पोस्ट किया गया

नीचे कोड का उपयोग करें:

 TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); 

AndroidManifest.xml में, निम्नलिखित अनुमति दें:

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

लेकिन याद रखना, यह कोड हमेशा काम नहीं करता, क्योंकि सेल फोन नंबर सिम कार्ड और नेटवर्क ऑपरेटर / सेल फोन वाहक पर निर्भर है।

इसके अलावा, फोन -> सेटिंग्स -> के बारे में -> फोन पहचान में जांचने की कोशिश करें, अगर आप वहां नंबर देखने में सक्षम हैं, तो ऊपर दिए गए कोड से फोन नंबर मिलने की संभावना अधिक है। यदि आप सेटिंग में फ़ोन नंबर देखने में सक्षम नहीं हैं, तो आप इस कोड के माध्यम से प्राप्त नहीं कर पाएंगे!

सुझाए गए वैकल्पिक हल:

  1. उपयोगकर्ता से मैन्युअल इनपुट के रूप में उपयोगकर्ता का फोन नंबर प्राप्त करें
  2. एसएमएस के माध्यम से उपयोगकर्ता के मोबाइल नंबर पर एक कोड भेजें
  3. फ़ोन नंबर की पुष्टि करने के लिए उपयोगकर्ता को कोड दर्ज करने के लिए कहें।
  4. साझाभाषा में नंबर सहेजें

ऐप के पहले लॉन्च के दौरान एक बार की गतिविधि के रूप में उपरोक्त 4 चरणों को करें बाद में, जब भी फोन नंबर की आवश्यकता होती है, साझा वरीयता में उपलब्ध मान का उपयोग करें।

 private String getMyPhoneNumber(){ TelephonyManager mTelephonyMgr; mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); return mTelephonyMgr.getLine1Number(); } private String getMy10DigitPhoneNumber(){ String s = getMyPhoneNumber(); return s != null && s.length() > 2 ? s.substring(2) : null; } 

कोड http://www.androidsnippets.com/get-my-phone-number से लिया गया है

बस ऊपर दिए गए उत्तरों में उपरोक्त स्पष्टीकरण के लिए थोड़ा सा जोड़ना चाहते हैं। जो दूसरों के लिए भी समय की बचत करेगा

मेरे मामले में इस पद्धति ने किसी भी मोबाइल नंबर को नहीं लौटाया, एक खाली स्ट्रिंग लौटा था यह इस मामले की वजह से था कि मैंने अपना नंबर नए सिम पर रख दिया था। इसलिए यदि मैं सेटिंग्स> फोन के बारे में> स्थिति> मेरा फोन नंबर में जाता हूं तो मुझे "अज्ञात" दिखाई देता है।

कभी-कभी, कोड खाली या खाली स्ट्रिंग रिटर्न करता है।

 TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); String mPhoneNumber = tMgr.getLine1Number(); 

अनुमति के साथ नीचे

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

एक और तरीका है कि आप अपना फोन नंबर प्राप्त करने में सक्षम होंगे, मैंने कई उपकरणों पर इसका परीक्षण नहीं किया है, लेकिन ऊपर कोड हर बार काम नहीं कर रहा है

नीचे कोड का प्रयास करें:

 String main_data[] = {"data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype"}; Object object = getContentResolver().query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"), main_data, "mimetype=?", new String[]{"vnd.android.cursor.item/phone_v2"}, "is_primary DESC"); if (object != null) { do { if (!((Cursor) (object)).moveToNext()) break; // This is the phoneNumber String s1 = ((Cursor) (object)).getString(4); } while (true); ((Cursor) (object)).close(); } 

आपको इन दो अनुमतियों को जोड़ने की आवश्यकता होगी

 <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> 

आशा है कि इस मदद करता है, धन्यवाद!

यह एक अधिक सरल उत्तर है:

 public String getMyPhoneNumber() { return ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)) .getLine1Number(); } 

टेलीफोनी मैनेजर सही समाधान नहीं है, क्योंकि कुछ मामलों में मेरे सुझाव के कारण, सिम में नंबर संचित नहीं किया जाता है, आपको शेयर की प्राथमिकता का उपयोग उपयोगकर्ता के फोन नंबर को पहली बार आवेदन खोलने के लिए करना चाहिए, और उसके बाद यह संख्या जब भी इस्तेमाल करेगी आपको आवेदन में ज़रूरत है

सबसे पहले उपयोगकर्ताओं को मोबाइल नंबर मिलना एथिकल पॉलिसी के खिलाफ है, पहले यह संभव था, लेकिन अब मेरे शोध के अनुसार इसके लिए कोई ठोस समाधान उपलब्ध नहीं है, कुछ कोड का इस्तेमाल करके मोबाइल नंबर प्राप्त करना संभव है लेकिन कोई गारंटी नहीं है कि यह काम करेगा केवल कुछ डिवाइस में बहुत सारे अनुसंधान के बाद मुझे केवल तीन समाधान मिले लेकिन वे सभी डिवाइस पर काम नहीं कर रहे हैं।

निम्नलिखित कारण हैं कि हम क्यों नहीं मिल रहे हैं?

1. एंड्रॉइड डिवाइस और नया सिम कार्ड मोबाइल नंबर संचित नहीं कर रहा है, यदि मोबाइल नंबर डिवाइस में उपलब्ध नहीं है और सिम में तो नंबर प्राप्त करना संभव है, अगर मोबाइल नंबर वाले कोई भी पुराने सिम कार्ड तो टेलीफोनी प्रबंधक का उपयोग कर हम दूसरे नंबर प्राप्त कर सकते हैं बुद्धिमान यह "रिक्त" या "" या "????" वापस करेगा

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> TelephonyManager tel= (TelephonyManager)this.getSystemService(Context. TELEPHONY_SERVICE); String PhoneNumber = tel.getLine1Number(); 

नोट: – मैंने इस समाधान को मोटो एक्स, सैमसंग टैब 4, सैमसंग एस 4, नेक्सस 5 और रेडमी 2 प्राइम में निम्नलिखित समाधानों का परीक्षण किया है, लेकिन हर बार यह रिक्त स्ट्रिंग वापस नहीं लाता है, इसलिए निष्कर्ष यह बेकार है

  1. यह विधि केवल रेडमी 2 प्राइम में काम कर रही है, लेकिन इसके लिए मैनिफेस्ट में संपर्क की अनुमति को पढ़ने की आवश्यकता है।

नोट: – यह गारंटी और कुशल समाधान भी नहीं है, मैंने कई डिवाइसों में इस समाधान का परीक्षण किया है, लेकिन यह केवल रेडमी 2 प्राइम में काम करता है जो दोहरी सिम डिवाइस है, जो मुझे दो मोबाइल नंबर देता है पहले एक सही होता है, लेकिन दूसरा नहीं है मेरे दूसरे सिम के हैं यह मेरे कुछ पुराने सिम कार्ड से संबंधित हैं जो मैं उपयोग नहीं कर रहा हूं।

  String main_data[] = {"data1", "is_primary", "data3", "data2", "data1", "is_primary", "photo_uri", "mimetype"}; Object object = getContentResolver(). query(Uri.withAppendedPath(android.provider.ContactsContract.Profile.CONTENT_URI, "data"), main_data, "mimetype=?", new String[]{"vnd.android.cursor.item/phone_v2"}, "is_primary DESC"); String s1=""; if (object != null) { do { if (!((Cursor) (object)).moveToNext()) break; // This is the phoneNumber s1 =s1+"---"+ ((Cursor) (object)).getString(4); } while (true); ((Cursor) (object)).close(); } 
  1. मैंने अपने शोध में पाया है कि पहले व्हाट्सएप खाते का इस्तेमाल करते हुए मोबाइल नंबर प्राप्त करना संभव था, लेकिन अब नया व्हाट्सएप संस्करण उपयोगकर्ता के मोबाइल नंबर को संग्रहीत नहीं करता है।

निष्कर्ष : – एंड्रॉइड के उपयोगकर्ता के मोबाइल नंबर को प्रोग्रामेटिक रूप से प्राप्त करने के लिए कोई गारंटीकृत समाधान नहीं है।

सुझाव : – 1. यदि आप उपयोगकर्ता के मोबाइल नंबर को सत्यापित करना चाहते हैं तो उस नंबर को प्रदान करने के लिए उपयोगकर्ता से पूछें, ओ.टी.पी. का इस्तेमाल करके आप यह सत्यापित कर सकते हैं।

  1. यदि आप उपयोगकर्ता के डिवाइस की पहचान करना चाहते हैं, इसके लिए आप डिवाइस IMEI नंबर आसानी से प्राप्त कर सकते हैं।

यद्यपि एकाधिक वॉयसमेल खातों के लिए संभव है, जब आप अपने नंबर से कॉल करते हैं, वाहक आपको वॉयसमेल पर ले जाते हैं तो, TelephonyManager.getVoiceMailNumber() या TelephonyManager.getCompleteVoiceMailNumber() , आपको आवश्यक स्वाद के आधार पर

उम्मीद है की यह मदद करेगा।

एक नया एंड्रॉइड एपीआई है जो उपयोगकर्ता को अनुमति के लिए बिना अपने फोन नंबर का चयन करने की अनुमति देता है। एक नज़र डालें: https://android-developers.googleblog.com/2017/10/effective-phone-number-verification.html

 // Construct a request for phone numbers and show the picker private void requestHint() { HintRequest hintRequest = new HintRequest.Builder() .setPhoneNumberIdentifierSupported(true) .build(); PendingIntent intent = Auth.CredentialsApi.getHintPickerIntent( apiClient, hintRequest); startIntentSenderForResult(intent.getIntentSender(), RESOLVE_HINT, null, 0, 0, 0); } 

जबकि एक सुरक्षा ऐप पर काम करते हुए फोन नंबर प्राप्त करने की आवश्यकता होती है, जो कि मेरे फोन को कभी भी उनके हाथों में मिल सकता है, मुझे ऐसा करना था; 1. बूट पूरा हुआ और फिर टेलीफ़ोनी प्रबंधक से लाइन 1_एनम्बर प्राप्त करने का प्रयास करें जो स्ट्रिंग परिणाम लौटाता है। 2. अपने फोन नंबर से स्ट्रिंग परिणाम की तुलना करें और यदि वे मेल नहीं खाते या स्ट्रिंग रिटर्न नल तो, 3. चुपके से एक स्ट्रिंग परिणाम वाले एसएमएस और मेरे कार्यालय नंबर पर विशेष चिह्न भेजें। 4. अगर संदेश भेजने में विफल रहता है, एक सेवा शुरू करें और प्रत्येक घंटे के बाद प्रयास जारी रखें जब तक कि अभिप्राय के लंबित एसएमएस को सफल नहीं किया जाता है इस कदम से मैं अपने खोए हुए फ़ोन का उपयोग करने वाले व्यक्ति की संख्या प्राप्त कर सकता था। अगर व्यक्ति को चार्ज किया जाता है तो इससे कोई फर्क नहीं पड़ता।

यहां बताया गया है कि आपको एम पोस्ट कैसे करना चाहिए:

 private void getPhoneInfo() { if(ContextCompat.checkSelfPermission(getBaseContext(), "android.permission.READ_SMS") == PackageManager.PERMISSION_GRANTED) { TelephonyManager tMgr = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE); Log.e(LOGGING_TAG, "PHONE NUMBER = " + tMgr.getLine1Number()); } else { final int REQUEST_CODE_ASK_PERMISSIONS = 123; ActivityCompat.requestPermissions(this, new String[]{"android.permission.READ_SMS"}, REQUEST_CODE_ASK_PERMISSIONS); } } 

सुनिश्चित करें कि आप READ_SMS स्थिति का उपयोग करने के लिए अनुरोधों को प्रकट करते हैं

 <uses-permission android:name="android.permission.READ_SMS"/>