我的應用程序只有在移動網絡可用時才發送短信。 目前我已設置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;
}
的問題是現在如何檢測自己是否能夠基於上述三行的返回值發送短信或不?由於isAvailable()返回true,其他兩行返回false;因爲isAvailable()返回true,其他兩行返回false;
SOLUTION
我已經想出了這個代碼:
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://計算器。 com/questions/2802472/detect-network-connection-type-on-android – waqaslam 2012-03-07 09:27:24
@Waqas感謝這些鏈接,無論網絡是否爲2g,3g等,上面的代碼都會返回相同的結果。我的意圖是檢測移動網絡的存在,返回的上述結果令人困惑(錯誤,錯誤,真實)。 – Ravibhushan 2012-03-07 11:00:08