Здесь, мое устройство на базе Android поддерживает и Wi-Fi и 3 г. В определенное время, какая сеть доступна на этом устройстве. Поскольку мое требование - когда 3 г доступны, я должен загрузить небольшой объем данных. когда Wi-Fi является доступными всеми данными, должны загрузить. Так, я должен проверить, что соединение является Wi-Fi или 3 г.Пожалуйста, помогите мне.Заранее спасибо.
Я использую это:
/**
* Checks if we have a valid Internet Connection on the device.
* @param ctx
* @return True if device has internet
*
* Code from: http://www.androidsnippets.org/snippets/131/
*/
public static boolean haveInternet(Context ctx) {
NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null || !info.isConnected()) {
return false;
}
if (info.isRoaming()) {
// here is the roaming option you can change it if you want to
// disable internet while roaming, just return false
return false;
}
return true;
}
Вам также понадобится
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
в AndroidMainfest.xml
Чтобы получить тип сети, вы можете использовать этот фрагмент кода:
ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//mobile
State mobile = conMan.getNetworkInfo(0).getState();
//wifi
State wifi = conMan.getNetworkInfo(1).getState();
, а затем использовать его так:
if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) {
//mobile
} else if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) {
//wifi
}
Чтобы получить тип мобильной сети, которую я бы попробовал TelephonyManager # getNetworkType или NetworkInfo # getSubtypeName