2014-06-19 81 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