Android 4.0 - проверить подключение к WiFi - PullRequest
3 голосов
/ 26 марта 2012

Я использую функцию ниже, чтобы проверить подключение к точке доступа WiFi:

public boolean IsWiFiConnected(){
 List<WifiConfiguration> wifiConfigList = wifiManager.getConfiguredNetworks();
 boolean retVal=false;
    for(WifiConfiguration wifiConf : wifiConfigList){               
        if(wifiConf.status==WifiConfiguration.Status.CURRENT){
            retVal=true;
            break;
        }
    }
 return retVal;
}

В Android 4.0 всегда возвращается false. Он отлично работает на предыдущих версиях. Спасибо

Ответы [ 3 ]

4 голосов
/ 26 марта 2012

Существует более быстрый и надежный метод, чем ваш.

public boolean IsWiFiConnected() {
    ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    return netInfo.isConnected();
}
2 голосов
/ 26 марта 2012

Просто чтобы расширить ответ Габриэля, так как, возможно, стоит проверить, что у пользователя есть какое-либо соединение для передачи данных, т.е. WiFi или данные. Это также отобразит диалоговое окно, спрашивающее пользователя, хотят ли они включить WiFi с помощью Intent. Надеюсь, это поможет вам!

    private boolean haveNetworkConnection() {
    boolean haveConnectedWifi = false;
    boolean haveConnectedMobile = false;

    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo[] netInfo = cm.getAllNetworkInfo();
    for (NetworkInfo ni : netInfo) {
        if (ni.getTypeName().equalsIgnoreCase("WIFI"))
            if (ni.isConnected())
                haveConnectedWifi = true;
        if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
            if (ni.isConnected())
                haveConnectedMobile = true;

    }
    if (haveConnectedWifi == false && haveConnectedMobile == false) {
        Log.d("Network State", "false");
        AlertDialog.Builder alert = new AlertDialog.Builder(YourActivity.this);                 
        alert.setTitle("No Data Connection!");  
        alert.setMessage("You have no data connection.");   
            alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int whichButton) {
                    // TODO Auto-generated method stub
                    final Intent intent = new Intent(Intent.ACTION_MAIN, null);
                    intent.addCategory(Intent.CATEGORY_LAUNCHER);
                    final ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.wifi.WifiSettings");
                    intent.setComponent(cn);
                    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity( intent);
                }

            });
            alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    return;   
                }
            });
            alert.show();

    }else{
        //do something else
    }
    return haveConnectedWifi || haveConnectedMobile;
}
0 голосов
/ 12 ноября 2012

проверить статус wifi:

ConnectivityManager conMgr;
NetworkInfo netInfo;
WifiManager wifiMgr;

conMgr=(ConnectivityManager)getSystemService(context.WIFI_Service);
netInfo=conMgr.getActiveNetworkInfo();
if(!(netInfo==null))
{
if(WifiMgr.isWifiEnabled())
{
//wifi  enabled
}
else
{
//wifi disabled i.e not available
}
}
...