Android 對手機網(wǎng)絡的檢測和監(jiān)聽的方法示例
此次分享內(nèi)容
使用BroadcastReceiver廣播接收器來接收網(wǎng)絡狀態(tài)(采用系統(tǒng)廣播)
BroadcastReceiver作為Android四大組件之一;
Android:BroadcastReceiver廣播接收器最全面解析
網(wǎng)絡權(quán)限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/>
自定義廣播接收器
public class NetWorkStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("網(wǎng)絡狀態(tài)發(fā)生變化"); //檢測API是不是小于23,因為到了API23之后getNetworkInfo(int networkType)方法被棄用 if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) { //獲得ConnectivityManager對象 ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //獲取ConnectivityManager對象對應的NetworkInfo對象 //獲取WIFI連接的信息 NetworkInfo wifiNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); //獲取移動數(shù)據(jù)連接的信息 NetworkInfo dataNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) { Toast.makeText(context, "WIFI已連接,移動數(shù)據(jù)已連接", Toast.LENGTH_SHORT).show(); } else if (wifiNetworkInfo.isConnected() && !dataNetworkInfo.isConnected()) { Toast.makeText(context, "WIFI已連接,移動數(shù)據(jù)已斷開", Toast.LENGTH_SHORT).show(); } else if (!wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) { Toast.makeText(context, "WIFI已斷開,移動數(shù)據(jù)已連接", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(context, "WIFI已斷開,移動數(shù)據(jù)已斷開", Toast.LENGTH_SHORT).show(); } //API大于23時使用下面的方式進行網(wǎng)絡監(jiān)聽 }else { System.out.println("API level 大于23"); //獲得ConnectivityManager對象 ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //獲取所有網(wǎng)絡連接的信息 Network[] networks = connMgr.getAllNetworks(); //用于存放網(wǎng)絡連接信息 StringBuilder sb = new StringBuilder(); //通過循環(huán)將網(wǎng)絡信息逐個取出來 for (int i=0; i < networks.length; i++){ //獲取ConnectivityManager對象對應的NetworkInfo對象 NetworkInfo networkInfo = connMgr.getNetworkInfo(networks[i]); sb.append(networkInfo.getTypeName() + " connect is " + networkInfo.isConnected()); } Toast.makeText(context, sb.toString(),Toast.LENGTH_SHORT).show(); } } }
注冊廣播
- 動態(tài)注冊
- 靜態(tài)注冊
動態(tài)注冊
public class MainActivity extends AppCompatActivity { NetWorkStateReceiver netWorkStateReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //在onResume()方法注冊 @Override protected void onResume() { if (netWorkStateReceiver == null) { netWorkStateReceiver = new NetWorkStateReceiver(); } IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(netWorkStateReceiver, filter); System.out.println("注冊"); super.onResume(); } //onPause()方法注銷 @Override protected void onPause() { unregisterReceiver(netWorkStateReceiver); System.out.println("注銷"); super.onPause(); } }
靜態(tài)注冊
在AndroidManifest.xml進行廣播的靜態(tài)注冊
<receiver android:name=".NetWorkStateReceiver"> <intent-filter> //檢測網(wǎng)絡變化的acton <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>
至此,今天分享完畢,這樣就可以實現(xiàn)對網(wǎng)絡狀態(tài)的實時監(jiān)聽了
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android 7.0 監(jiān)聽網(wǎng)絡變化的示例代碼
- android 監(jiān)聽網(wǎng)絡狀態(tài)的變化及實戰(zhàn)的示例代碼
- Android 動態(tài)注冊監(jiān)聽網(wǎng)絡變化實例詳解
- Android 監(jiān)聽網(wǎng)絡狀態(tài)方法詳解
- Android編程監(jiān)聽網(wǎng)絡連接狀態(tài)改變的方法
- Android 實時監(jiān)測(監(jiān)聽)網(wǎng)絡連接狀態(tài)變化
- Android 廣播監(jiān)聽網(wǎng)絡狀態(tài)詳解及實例代碼
- Android網(wǎng)絡狀態(tài)實時監(jiān)聽實例代碼(二)
- Android 網(wǎng)絡狀態(tài)實時監(jiān)聽代碼實例(一)
- Android中監(jiān)聽判斷網(wǎng)絡連接狀態(tài)的方法
相關(guān)文章
Android帶數(shù)字或紅點的底部導航攔和聯(lián)網(wǎng)等待加載動畫示例
這篇文章主要介紹了Android帶數(shù)字或紅點的底部導航攔和聯(lián)網(wǎng)等待加載動畫示例,具有一定的參考價值,有興趣的同學可以了解一下。2017-03-03Android 自定義圓形頭像CircleImageView支持加載網(wǎng)絡圖片的實現(xiàn)代碼
這篇文章主要介紹了Android 自定義圓形頭像CircleImageView支持加載網(wǎng)絡圖片的實現(xiàn)代碼,非常不錯具有參考借鑒價值,需要的朋友可以參考下2016-10-10AndroidStudio構(gòu)建項目提示錯誤信息“unable to find valid certification”的
這篇文章主要介紹了AndroidStudio構(gòu)建項目提示“unable to find valid certification”最新解決方案,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05Android Compose實現(xiàn)聯(lián)系人列表流程
聲明式UI,更簡單的自定義,實時帶交互的預覽功能Compose并不是類似于Recyclerview的高級控件,而是直接拋棄了View,ViewGroup那套東西,從上到下魯了一套全新的框架,直白點說就是它的渲染機制,布局機制,觸摸算法,以及UI具體寫法全都是新的2023-03-03Fragment里添加ListView不要用ListFragment
這篇文章主要介紹了Fragment里添加ListView不要用ListFragment,需要的朋友可以參考下2015-07-07Flutter上的數(shù)據(jù)監(jiān)控深入理解
這篇文章主要給大家介紹了關(guān)于Flutter上的數(shù)據(jù)監(jiān)控的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Flutter具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-06-06Android socket實現(xiàn)原理詳解 服務端和客戶端如何搭建
這篇文章主要為大家詳細介紹了Android socket實現(xiàn)原理詳解,以及服務端和客戶端的搭建方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08