Dacă dispozitivul pe care rulează aplicația dvs. are suport GSM, acesta trebuie să aibă o cartelă SIM. Datele pe care le puteți extrage utilizând obiectul TelephonyManager sunt codul de țară în format ISO, numele operatorului, codurile MCC (codul țării mobile) și codul de rețea mobil (MNC). Aceste informații sunt utile în cazul în care trebuie să oferiți anumite capabilități unui anumit operator.
De asemenea, puteți afla numărul de serie al cartelei SIM curente dacă adăugați autoritatea READ_PHONE_ STATE la manifestul aplicației dvs.
Înainte de a începe să lucrați cu aceste metode, trebuie să vă asigurați că cartela SIM este gata. Puteți afla acest lucru folosind metoda getSimState, așa cum se arată în Lista 12.6.
int simState = telephonyManager.getSimState ();
caz (TelephonyManager.SIM_STATE_ABSENT): pauză;
caz (TelephonyManager.SIM_STATE_NETWORK_LOCKED): pauză; caz (TelephonyManager.SIM_STATE_PIN_REQUIRED): pauză; caz (TelephonyManager.SIM_STATE_PUK_REQUIRED): pauză; caz (TelephonyManager.SIM_STATE_UNKNOWN): pauză;
// Extrageți codul de țară în format ISO de pe cartela SIM
String simCountry = telephonyManager.getSimCountryIso ();
// Obțineți codul operatorului activ al cartelei SIM (MCC + MNC) String simOperatorCode = telephonyManager.getSimOperator ();
// Extrageți numele operatorului de pe cartela SIM
Șir simOperatorName = telephonyManager.getSimOperatorName ();
// - Necesită permisiunea READ_PHONE_STATE -
// Obțineți numărul de serie al cartelei SIM
String simSerial = telephonyManager.getSimSerialNumber ();
într-o stare de conectare la rețea,
Listarea 12.7. Cadrul de implementare al PhoneStateListener
TelefonStateListener phoneStateListener = nou TelefonStateListener ()
public void onCallForwardingIndicatorChanged (boolean cfi) <>
public void onCallStateChanged (stare int, String incomingNumber) <>
public void onCellLocationChanged (locația Locația celulară) <>
public void onDataActivity (direcția int) <>
public void onDataConnectionStateChanged (stare int) <>
public void onMessageWaitingIndicatorChanged (boolean mwi) <> public void onServiceStateChanged (ServiceState serviceState) <> public void onSignalStrengthChanged (int asu) <>
După ce creați propriul obiect PhoneStateListener, înregistrați-l cu TelephonyManager, utilizând o mască bitmică pentru a identifica evenimentele pe care doriți să le urmăriți, după cum se arată în Lista 12.8.
Listing 12.8. Înregistrați-l pe PhoneStateListener
TelefonStateListener.LISTEN_CALL_STATE | TelefonStateListener.LISTEN_CELL_LOCATION | TelefonStateListener.LISTEN_DATA_ACTIVITY | TelefonStateListener.LISTEN_DATA_CONNECTION_STATE | PhoneStateListener.LISTEN_MESSAGE_WAITING_
Pentru a anula înregistrarea, apelați metoda de ascultare prin trimiterea câmpului de biți PhoneStateListener.LISTEN_NONE ca parametru, după cum se arată mai jos: