2013-09-05 2 views
3

эй я новичок в android, пожалуйста, помогите мне. Я просто хотел узнать имена библиотек, которые позволяют мне контролировать сетевое подключение.Как контролировать состояние сети в android

+3

Пожалуйста, сушите свой вопрос. Вы хотите узнать, подключены ли устройства к Интернету или нет? Или что-то другое ? –

+0

Вы ищете api: ConnectivityManager: http://developer.android.com/reference/android/net/ConnectivityManager.html – Dyna

ответ

9

Ваш вопрос не ясно!
Если проверка сетевого подключения - это то, что вы хотите, то будет выполнено следующее.

// Check network connection 
private boolean isNetworkConnected(){ 
    ConnectivityManager connectivityManager 
      = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();  
} 
+0

Извините, я просто хочу, чтобы общая библиотека позволяла мне периодически проверять статус сети, которую я могу легко реализовать в любом проекте –

19

Просто создайте broadcast receiver с CONNECTIVITY_CHANGE действием. И вы получите broadcast всякий раз, когда сетевое подключение изменится.

NetworkUtil.java

public class NetworkUtil { 

    public static int TYPE_WIFI = 1; 
    public static int TYPE_MOBILE = 2; 
    public static int TYPE_NOT_CONNECTED = 0; 


    public static int getConnectivityStatus(Context context) { 
     ConnectivityManager cm = (ConnectivityManager) context 
       .getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
     if (null != activeNetwork) { 
      if(activeNetwork.getType() == ConnectivityManager.TYPE_WIFI) 
       return TYPE_WIFI; 

      if(activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) 
       return TYPE_MOBILE; 
     } 
     return TYPE_NOT_CONNECTED; 
    } 

    public static String getConnectivityStatusString(Context context) { 
     int conn = NetworkUtil.getConnectivityStatus(context); 
     String status = null; 
     if (conn == NetworkUtil.TYPE_WIFI) { 
      status = "Wifi enabled"; 
     } else if (conn == NetworkUtil.TYPE_MOBILE) { 
      status = "Mobile data enabled"; 
     } else if (conn == NetworkUtil.TYPE_NOT_CONNECTED) { 
      status = "Not connected to Internet"; 
     } 
     return status; 
    } 
} 

Broadcast Receiver для обработки изменений в сетевом состоянии

public class NetworkChangeReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 

     String status = NetworkUtil.getConnectivityStatusString(context); 

     Toast.makeText(context, status, Toast.LENGTH_LONG).show(); 
    } 
} 

AndroidMenifest.xml

<application ...> 
    ... 
     <receiver 
      android:name="net.viralpatel.network.NetworkChangeReceiver" 
      android:label="NetworkChangeReceiver" > 
      <intent-filter> 
       <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
       <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
      </intent-filter> 
     </receiver> 
     ... 
</application> 

UPDATE

Права доступа требуется для доступа к сети государства:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+1

извините за глупый вопрос, но как я могу это использовать в своем проекте –

+0

Вы можете получить полный инструкции, как реализовать здесь http://viralpatel.net/blogs/android-internet-connection-status-network-change/ –

+0

эй я пробовал это, но каждый раз, когда он показывал мне тост «Не подключен к Интернету», на самом деле проблема –

0

Пройти ниже, чтобы получить статус сети.

ConnectivityManager Class

основных обязанностей этого класса являются:

  • сети Монитор соединений (Wi-Fi, GPRS, UMTS и т.д.)
  • Переслать широковещательных намерений, когда подключение к сети изменяется
  • Попытка «провалиться» в другую сеть при потере связи с сетью
  • Предоставить API, который позволяет приложениям запрос крупнозернистого или мелкозернистого состояние доступных сетей
public static boolean IsNetConnected() { 
    boolean NetConnected = false; 
    try { 
     ConnectivityManager connectivity = (ConnectivityManager) m_context 
       .getSystemService(m_context.CONNECTIVITY_SERVICE); 
     if (connectivity == null) { 
      NetConnected = false; 
     } else { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) { 
       for (int i = 0; i < info.length; i++) { 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) { 
         NetConnected = true; 
        } 
       } 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
     NetConnected = false; 
    } 
    return NetConnected; 
} 
1

Если вы хотите, чтобы проверить состояние сети .. Сначала нужно создать этот класс ..

public class ConnectionDetector { 

private Context _context; 

public ConnectionDetector(Context context){ 
    this._context = context; 
} 

public boolean isConnectingToInternet(){ 
    ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (connectivity != null) 
     { 
      NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
      if (info != null) 
       for (int i = 0; i < info.length; i++) 
        if (info[i].getState() == NetworkInfo.State.CONNECTED) 
        { 
         return true; 
        } 

     } 
     return false; 
} 

}

Тогда всякий раз, когда вы хотите проверить статус ..

ConnectionDetector cd = new ConnectionDetector(getApplicationContext()); 
Boolean isInternetPresent = cd.isConnectingToInternet(); 
0

Поскольку в типичных приложениях Android, нам нужно будет проверить, если пользователь подключен к Интернету, так что служебный класс со всеми этими функциями и проходят в контексте, как показано ниже:

package utilities; 

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 

public class Util { 
    public boolean isNetworkConnected(Context c){ 
     ConnectivityManager connectivityManager 
       = (ConnectivityManager) c.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
     return activeNetworkInfo != null && activeNetworkInfo.isConnected();  
    } 
} 

И вы можете позвонить по:

Util utility = new Util(); 
Toast.makeText(getApplicationContext(),"State is :"+utility.isNetworkConnected(this), Toast.LENGTH_LONG).show(); 
Смежные вопросы