[英]Android - check internet and Wi-Fi connectivity with the help of BroadcastReceiver?
我想檢查互聯網和Wi-Fi連接。 我已經實現了代碼。 但是在此代碼中,問題是,當我在設備中激活Wi-Fi時,它會連續舉起3-4次“ Wi-Fi斷開連接”和“ Internet連接”,然后最后舉起“ Wi-Fi已連接”的消息,然后我的Wi-Fi連接在我的設備中顯示為已啟用。 啟用或禁用Wi-Fi時,我只需要檢查一次Wi-Fi連接。 謝謝。
爪哇
public class ConnectionReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
boolean isConnectedInternet =
intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
ConnectivityManager wifiConn =
(ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = wifiConn.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWifi.isConnected()) {
Toast.makeText(context, "Wifi Conected", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(context, "Wifi disconnected", Toast.LENGTH_LONG).show();
}
if(isConnectedInternet){
Toast.makeText(context, "Internet Connection Lost", Toast.LENGTH_LONG).show();
}
else{
Toast.makeText(context, "Internet Connected", Toast.LENGTH_LONG).show();
}
}
}
清單
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<receiver android:name=".ConnectionReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
我不太清楚,但可能是您一次收到所有事件(CONECTIVITY_CHANGE,WIFI_STATE_CHANGED和STATE_CHANGE)。 就我的理解而言,CONNECTIVITY_CHANGE應該足夠了。 您應該閱讀開發文檔中的詳細信息。
從清單中刪除以下兩行:
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
看一下文檔: http : //developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION
我有我的連接,您可以使用它。
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;
}
}
和你的活動中..
if (new ConnectionDetector(this).isConnectingToInternet()){
Toast.makeText(context, "Wifi Conected", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(context, "Wifi disconnected", Toast.LENGTH_LONG).show();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.