2017-02-19 157 views
0

我正在開發一個應用程序,我需要一個廣播接收器來監視無線連接和斷開狀態。 我試了很多代碼,瀏覽了很多的stackoverflow帖子,但沒有成功。 我還沒有找到任何這樣的方法/代碼工作正常,一些代碼根本不工作,一些正在返回錯誤的信息,一些正在使廣播接收機崩潰/重新啓動等等。 那麼,有沒有任何充分的證明方法來監測無線連接/斷開狀態,適用於所有版本的Android從4.0.3 Icecream sandwitch開始? 任何幫助將不勝感激。通過廣播接收器監測Wifi連接狀態和斷開狀態

回答

0

首先,您需要定義一個可以偵聽網絡更改事件的廣播接收器。

public class NetworkChangeReceiver extends BroadcastReceiver { 

    public static final String TYPE_NET_CONNECTIVITY_CHANGE = "android.net.conn.CONNECTIVITY_CHANGE"; 

    @Override 
    public void onReceive(final Context context, Intent intent) { 
     if (TYPE_NET_CONNECTIVITY_CHANGE.equals(intent.getAction())) { 
      boolean connected = NetworkStatus.isNetworkConnected(context); 
      if (connected) { 
       //Connected 

      } else { 
       //Disconnected 
      } 
     } 
    } 
} 

現在註冊您的接收器清單中,如: -

<application 
     ...> 
    <receiver android:name=". NetworkChangeReceiver" > 
     <intent-filter> 
      <action android:name="android.net.wifi.WifiManager.WIFI_STATE_CHANGED_ACTION" /> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
     </intent-filter> 
    </receiver> 

</application> 
+0

你檢查?它真的有用嗎?我今天不能檢查,因爲我今天離開了我的家,你能確認一下嗎?還有,爲什麼要聲明權限?另外,在onReceive中,我們沒有聽取android.net.wifi.WifiManager.WIFI_STATE_CHANGED_ACTION,那麼它將如何響應WiFi連接/斷開連接? –

+0

我在我現有的應用程序中使用它,它正在工作。我假設你已經提供了Internet權限,因爲沒有它你不會聽任何事件。 – Avi

+0

嗨,AVI,實際上,我只需要檢測到無線網絡連接或斷開連接,那麼爲什麼互聯網和電話的權限? –