2017-09-26 25 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连接断开。 –

相关问题