/ Błąd / TelephonyManager.getLine1Number ()? - Android, numer telefonu

TelephonyManager.getLine1Number () nie działa? - Android, numer telefonu

Chcę uzyskać numer telefonu urządzenia z Androidem. Używam tego kodu:

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

Na moim telefonie (HTC Wildfire) nie mogę uzyskać numeru telefonu - otrzymuję tylko pusty ciąg. Jeśli uruchomię kod na emulatur, zwykle wyświetlany jest numer telefonu.

Jeśli przejdę do Ustawienia => Informacje o telefonie => Tożsamość telefonu-> Numer telefonu, numer telefonu to „Nieznany”.

Gdzie jest problem? Czy coś jest nie tak z moją kartą SIM?

Odpowiedzi:

35 dla odpowiedzi nr 1

W naszym projekcie mieliśmy ten sam problem. Wniosek był taki, że zależy to od karty SIM.

Co się z nami stało:

  • Galaxy S z kartą AT&T SIM: może odczytać numer telefonu, Ustawienia pokazuje numer
  • Ta sama Galaxy z europejską kartą SIM: nie można odczytać numeru i „nieznane” w Ustawieniach (telefon komórkowy był doskonale funkcjonalny, po prostu nie mógł odczytać numeru)

Zgłoszono to również na innych forach.

W końcu postanowiliśmy poprosić użytkownika o numer telefonu. Trochę bardziej zaangażowany, w rzeczywistości: if( "SIM card present" && "cannot read the cell number") "ask user"; . W przeciwnym razie będziemy nadal podsłuchiwać użytkownika, który nie ma karty SIM.


11 dla odpowiedzi nr 2

Zamiast numeru telefonu użyj numeru seryjnego karty SIM, który zawsze istnieje i zawsze jest prawidłową wartością.

 telephonyManager.getSimSerialNumber();

Numer seryjny karty SIM jest unikalny przynajmniej w obrębie operatora. Więc w połączeniu z

 telephonyManager.getNetworkOperator();

będziesz mieć unikalny identyfikator subskrybenta w danym kraju.

W połączeniu z

 telephonyManager.getNetworkCountryIso();

będziesz mieć globalnie unikalny identyfikator subskrybenta.

Mam nadzieję, że to pomoże.

Twoje zdrowie.


5 dla odpowiedzi nr 3

Karta SIM przechowuje numer telefonu i można go edytowaćprzez Ciebie. Nie mogę powiedzieć na Androida, ale w WM możesz łatwo edytować swój numer telefonu, który jest zapisany na karcie SIM. Oczywiście nie oznacza to, że możesz zmienić swój numer telefonu na bieżąco. Właściwie możesz tam wpisać dowolną liczbę, a programy uwierzą, że to Twój prawdziwy numer :)


2 dla odpowiedzi № 4

Kiedy przeniosłem kartę SIM do nowego telefonu, czasami stwierdziłem, że numer telefonu nie pojawia się w Ustawieniach -> Informacje o telefonie -> Status -> Mój numer telefonu.

Moje punkty danych:

  • AT&T Atrix umieszczając w nim zupełnie nową kartę SIM mówi „Voice MSISDN Line1 null”.
  • Po włożeniu do niej nowej karty SIM T-Mobile G1 poprawnie wyświetla numer telefonu.
  • Przeniesienie karty SIM T-Mobile G2 ze starego G1 na „Mówi się”.

0 dla odpowiedzi № 5

Używam karty SIM, która pozwala tylko na transfer danych. Nie zezwala na połączenia telefoniczne.

Kiedy próbuję uzyskać numer telefonu getLine1Number(), Dostaję pusty ciąg.


0 dla odpowiedzi № 6

Numer telefonu dostępny, jeśli karta SIM jestpozwala mu dostać. W naszej firmie znalazłem tylko jedną kartę SIM, na którą można uzyskać numer. Sprawdzam tę kartę SIM na wszystkich urządzeniach z Androidem. Wszystko ok. GetLine1Number () jest w porządku. Teraz szukam numeru telefonu dla innej karty SIM. Wyślij sms na nasz serwer sms lub inne urządzenie z Androidem (z przetwarzaniem SMS-ów)