標籤:斷網 註冊 state 改變 class 串連方式 broadcast 動態 info
Android系統網路連接狀態的改變會發一個廣播,註冊一個廣播接收者,即時動態檢測網路狀態,及時提醒使用者,最佳化使用者體驗。
本文僅提供WIFI 狀態的檢測作為參考,其他網路連接方式請對比WIFI串連作出調整。 首先寫一個WifiStateBroadcast類繼承BroadcastReceiver,重寫onRecevie方法,擷取網路連接狀態管理器,通過管理器拿到對應的網路資訊,得到網路狀態,判斷網路狀態,作出相應的商務邏輯.
1 public class WifiStateBroadCast extends BroadcastReceiver { 2 @Override 3 public void onReceive(Context context, Intent intent) { 4 //擷取manager 5 ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 6 //擷取wifi狀態 7 NetworkInfo.State state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); 8 if (state != NetworkInfo.State.CONNECTED){ 9 Toast.makeText(context,"WIFI已中斷連線",Toast.LENGTH_SHORT).show();10 }else if (state == NetworkInfo.State.CONNECTED){11 Toast.makeText(context,"WIFI已串連",Toast.LENGTH_SHORT).show();12 }13 }14 }
然後在資訊清單檔中靜態註冊廣播
1 <receiver android:name=".broadcast.WifiStateBroadCast">2 <intent-filter>3 <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>4 </intent-filter>5 </receiver>
不要忘了添加許可權
1 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />2 <uses-permission android:name="android.permission.INTERNET" />3 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
這樣當行動電話通訊發生變化的時候,就能及時作出處理,防止某些過於依賴的程式無法正常的工作。
Android 通過廣播擷取網路狀態