Мое приложение отправляет 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
}
я считаю, что это должно помочь Http: // StackOverflow. com/questions/2802472/detect-network-connection-type-on-android – waqaslam
@Waqas Спасибо за ссылки, независимо от того, является ли сеть 2g, 3g и т. д., приведенный выше код возвращает тот же результат. Мое намерение заключается в обнаружении присутствия мобильной сети, возвращенный выше результат сбивает с толку (false, false, true). – Ravibhushan