2014-06-19 53 views
0

我试图使用BroadcastReceiver来检测WiFi是否连接,并简单地显示状态变化时的烤面包(wifi disonnect/reconnect/turn off)似乎工作。有任何想法吗?BroadcastReceiver无法正常工作(检测WiFi是否连接)

ConnectionChangeReceiver类:

public class ConnectionChangeReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

     final boolean isWifiConn = networkInfo.isConnected(); 

     Log.d("debug", "Wifi connected: " + isWifiConn); 

     Toast toast = Toast.makeText(context, "Wifi connected: " + isWifiConn, Toast.LENGTH_LONG); 
     toast.show();  
    } 
} 

清单:

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


    <receiver android:name="ConnectionChangeReceiver" android:label="NetworkConnection"> 
     <intent-filter> 
      <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> 
      <action android:name="android.net.wifi.STATE_CHANGE"/> 
     </intent-filter> 
    </receiver> 

我走在应用程序,并断开无线网络连接,重新连接,没有面包。我禁用了wifi,没有烤面包。重新启用它,不要烤面包。我怀疑广播接收机有问题。

在此先感谢。

回答

0

我明白了。

我的问题是在清单。我将接收器块放在应用程序标签之外。一旦我将其移入内部,它就可以完美运行。

+0

我猜这会多次点燃wifi甚至一次改变? –

+0

是的,你是对的。当从WIFI关闭 - >开启时,我注意到它激发了两次。一旦使用isAvaialble(),true && isConnected()为false,第二次使用isAvailable()true && isConnected()为true。尽管应用程序不应该太紧张,而且我还没有找到解决方法。我相信这是正确的实施。 – Jonny07