2012-03-07 5 views
0

Мое приложение отправляет SMS только в том случае, если доступна мобильная сеть. В настоящее время я установил ON WIFI, а также МОБИЛЬНАЯ СЕТЬ.Обнаружение присутствия в мобильной сети

Следующий фрагмент кода при выполнении дает мне:

public boolean isNetworkAvailable(Context context) { 
    final ConnectivityManager connMgr = (ConnectivityManager) context 
      .getSystemService(Context.CONNECTIVITY_SERVICE);   
    // WIFI is ON and MOBILE Network is present. 
    final NetworkInfo mobileNetwork = connMgr 
      .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
    final State mobileState = mobileNetwork.getState(); 

    if(mobileNetwork!=null) 
    { 
     // RETURNS FALSE 
     Log.d("Contacts","mobileNetwork.isConnected() "+mobileNetwork.isConnected()); 
     // RETURNS FALSE 
     Log.d("Contacts","isConnectedOrConnecting() "+mobileNetwork.isConnectedOrConnecting()); 
     // RETURNS TRUE 
     Log.d("Contacts","mobileNetwork.isAvailable()() "+mobileNetwork.isAvailable()); 
     return mobileNetwork.isAvailable(); 
    } 

    return false; 

} 

Вопрос заключается в том, как определить, теперь может ли я отправить SMS или не на основе значения, возвращенного выше трех линий?

Поскольку isAvailable() возвращает true, а остальные 2 строки возвращают false;

РЕШЕНИЕ

я придумал этот код:

TelephonyManager telMgr = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
    int simCardState = telMgr.getSimState();   
    int simNetworkType = telMgr.getNetworkType(); 
    int simDataState = telMgr.getDataState(); 
    if(simCardState == TelephonyManager.SIM_STATE_READY && simDataState == TelephonyManager.DATA_CONNECTED) 
    { 
     //NETWORK IS AVAILABLE FOR SENDING SMS 
    } 
+0

я считаю, что это должно помочь Http: // StackOverflow. com/questions/2802472/detect-network-connection-type-on-android – waqaslam

+0

@Waqas Спасибо за ссылки, независимо от того, является ли сеть 2g, 3g и т. д., приведенный выше код возвращает тот же результат. Мое намерение заключается в обнаружении присутствия мобильной сети, возвращенный выше результат сбивает с толку (false, false, true). – Ravibhushan

ответ

0

этот код должен помочь вам обнаружить различные состояния

TelephonyManager telMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
int simCardState = telMgr.getSimState(); 
switch (simCardState) { 
    case TelephonyManager.SIM_STATE_ABSENT: 
     // do something 
     break; 
    case TelephonyManager.SIM_STATE_NETWORK_LOCKED: 
     // do something 
     break; 
    case TelephonyManager.SIM_STATE_PIN_REQUIRED: 
     // do something 
     break; 
    case TelephonyManager.SIM_STATE_PUK_REQUIRED: 
     // do something 
     break; 
    case TelephonyManager.SIM_STATE_READY: 
     // here you may set a flag that the phone is ready to send SMS 
     break; 
    case TelephonyManager.SIM_STATE_UNKNOWN: 
     // do something 
     break; 
} 
+0

Спасибо за входы – Ravibhushan

+0

Добавили решение под запрос. – Ravibhushan

Смежные вопросы