2017-09-26 27 views
1

我在我的應用中使用廣播接收器類,並且正在廣播接收器類中對WiFi狀態進行操作。如果WiFi斷開或連接,然後做一些操作。當WiFi連接其顯示正確的消息,但是當WiFi斷開其不顯示WiFi斷開連接消息,而不是顯示其他語句。使用廣播接收器獲取WiFi狀態並對其進行操作

這是我的廣播接收機類代碼。

public class WifiReceiver extends BroadcastReceiver { 
private static final String TAG = "NetworkStateReceiver"; 

@Override 
public void onReceive(final Context context, final Intent intent) { 
    Log.d(TAG, "Network connectivity change"); 


     if (intent.getExtras() != null) { 
      final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
      final NetworkInfo ni = connectivityManager.getActiveNetworkInfo(); 
      //check if wifi is connected 
      if (ni != null && ni.isConnectedOrConnecting()) { 
       Log.i(TAG, "Network " + ni.getTypeName() + " connected"); 
     } 
     else if (intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) { 
     Log.i(TAG, "wifi disconnected"); 
      } 
      else { 
     Log.i(TAG, "Network else state"); 
      } 
     } 

在清單

<receiver android:name=".WifiReceiver"> 
     <intent-filter> 
      <action android:name="android.net.wifi.WIFI_STATE_CHANGED" /> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
    </receiver> 
+0

爲什麼會投票?任何原因? –

回答

2

註冊的工作實施例

@Override 
    public void onReceive(Context context, Intent intent) 
    { 
     String action = intent.getAction(); 

if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) 
{ 
    WifiManager manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
    NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 
    NetworkInfo.State state = networkInfo.getState(); 

    if(state == NetworkInfo.State.CONNECTED) 
    { 
     Log.d("Tag","Connected"); 
    } 

    if(state == NetworkInfo.State.DISCONNECTED) 
    { 
     if(manager.isWifiEnabled()) 
     { 
      Log.d("Tag","Disconnected"); 
     } 
    } 
    } 

    } 
+0

謝謝@XäiñUl Abideen。但我需要wifi斷開連接條件。 –

+0

沒有微粒來檢查網絡是否與wifi斷開連接或數據 –

1

創建WiFi的對象

wifi = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 

然後

if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) 
    { 
if (wifi.isWifiEnabled()) { 
     //perform action 
    } 
    else { 
     //perform action 
    } 
+0

我需要wifi斷開連接條件。我節省了wifi dissconnect時間,但問題ia當wifi連接它首先調用其他條件,然後調用條件。 –

+0

嘗試使用反向條件 – YoLo

+0

但我需要兩個coditions如果wifi連接和WiFi連接斷開。 –

相關問題