2015-03-16 17 views
7
Ben cep telefonu numarasını almak için aşağıdaki kodu kullanıldığında defaultly, kullanıcı adı olarak alınacaktır kullanıcıların cep telefonu numarası, almak istiyorum

, boş bir dize döndürür döndürürandroid getLine1Number() boş dize

TelephonyManager tMgr = (TelephonyManager)getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 
      mPhoneNumber = tMgr.getLine1Number(); 
      String mobNo = mPhoneNumber.replace("+", ""); 
bulduğum

bir nedeni telefon numaram> SIM Durumu Telefon-> Status- Hakkında Ayarlar-> altında bilinmeyen olmasıdır. Kullanıcılara herhangi bir yük getirmeden bu sorunu nasıl giderebiliriz.

enter image description here

+0

Tanım için IMEI numarasını kullanmayı düşünün. – Droidman

cevap

1

vardır en azından bazı SIM Kartlar/orada numaralarını etmeyenler Operatörler - Onu gördük ve bunu gördük. Bu konuda yapabileceğiniz bir şey yoktur.

+0

kesinlikle, çözüm orada olacak, çünkü bu uygulama geliştiricilerin çok temel ihtiyacı – ABI

+0

Teknik olarak mümkün değilse, "uygulama geliştiricilerin çok temel bir ihtiyacı" olup olmadığı önemli değil. Bu işlev iOS'ta da mevcut değildir, en azından üçüncü taraf uygulamaları için geçerli değildir. Geliştiriciler de onunla yaşamak zorundalar. – sstn

+1

WhatsApp gibi (çok popüler) uygulamalar, kullanıcıdan telefon numarasını girmesini/onaylamasını ister. – sstn

1

getLine1Number() belgelerine bakın. Kullanılamıyorsa, null döndürür. Yani @sstn kısmen haklı. Bu konuda çok yapamazsınız. Hatırlayabildiğim kadarıyla bu yöntem, SIM'de saklanan sayıyı alır. Bazı sağlayıcılar erişimi kısıtlar ve diğerleri sağlamaz.

Ancak, gerçekten ağdan otomatik olarak telefon numarası almak için zorlanıyorsanız, bir şey daha deneyebilirsiniz. Ağ sağlayıcılarının çoğu kendi API'lerini sağlar. API, kullanıcının kablosuz ağa veya başka bir yönteme değil, ağ verilerine bağlanmasını gerektirebilir. Farklı ülkelerdeki farklı sağlayıcılar buna göre farklılık gösterebilir. Potansiyel olarak kullanarak ağ sağlayıcısını tanıyabilir, ardından numarayı almak için sağlayıcıya özel API'yi kullanabilirsiniz. Ancak ücretsiz olup olmadığından emin değil. Örneğin: Kanada’da Telus’un API’u vardır, ancak onlarla ortaklık kurmanızı gerektirir. Benzer şekilde Rogers vb.

Bu acıdan geçmek istemiyorsanız, son seçenek kullanıcının girmesini istemektir. Eğer geçerliliği konusunda endişeleriniz varsa, daima bir zaman kodu SMS doğrulaması yapabilirsiniz.

Yardım edin.

+1

boş bir dize döndürür, boş değil – ABI