Android实时监听网络状态
生活随笔
收集整理的這篇文章主要介紹了
Android实时监听网络状态
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android開發實時監聽網絡狀態變化一般有兩種方法:
1. 新建一個基類BasicActivity.class,在基類中注冊網絡監聽廣播NetworkChangeReceiver.class,所有頁面的Activity都繼承此基類BasicActivity.class
(1)網絡狀態改變監聽類:NetWorkChangeReceiver.class
package com.rxandroid.receiver;import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.wifi.WifiManager; import android.util.Log;/*** 監聽網絡狀態變化* Created by Travis on 2017/10/11.*/public class NetWorkChangReceiver extends BroadcastReceiver {/*** 獲取連接類型** @param type* @return*/private String getConnectionType(int type) {String connType = "";if (type == ConnectivityManager.TYPE_MOBILE) {connType = "3G網絡數據";} else if (type == ConnectivityManager.TYPE_WIFI) {connType = "WIFI網絡";}return connType;}@Overridepublic void onReceive(Context context, Intent intent) {if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {// 監聽wifi的打開與關閉,與wifi的連接無關int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);Log.e("TAG", "wifiState:" + wifiState);switch (wifiState) {case WifiManager.WIFI_STATE_DISABLED:break;case WifiManager.WIFI_STATE_DISABLING:break;}}// 監聽網絡連接,包括wifi和移動數據的打開和關閉,以及連接上可用的連接都會接到監聽if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {//獲取聯網狀態的NetworkInfo對象NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);if (info != null) {//如果當前的網絡連接成功并且網絡連接可用if (NetworkInfo.State.CONNECTED == info.getState() && info.isAvailable()) {if (info.getType() == ConnectivityManager.TYPE_WIFI || info.getType() == ConnectivityManager.TYPE_MOBILE) {Log.i("TAG", getConnectionType(info.getType()) + "連上");}} else {Log.i("TAG", getConnectionType(info.getType()) + "斷開");}}}} }(2)基類 BasicActivity
package com.rxandroid.activity;import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.os.Bundle; import android.support.v7.app.AppCompatActivity;import com.rxandroid.receiver.NetWorkChangReceiver;/*** Activity基類:實時獲取網絡狀態* create by Travis1022 on 2017-10-11*/ public class BasicActivity extends AppCompatActivity {private boolean isRegistered = false;private NetWorkChangReceiver netWorkChangReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//注冊網絡狀態監聽廣播netWorkChangReceiver = new NetWorkChangReceiver();IntentFilter filter = new IntentFilter();filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(netWorkChangReceiver, filter);isRegistered = true;}@Overrideprotected void onDestroy() {super.onDestroy();//解綁if (isRegistered) {unregisterReceiver(netWorkChangReceiver);}} }(3) 在AndroidManifest.xml中聲明廣播以及對應的網絡權限
<uses-permission android:name="android.permission.INTERNET"/><!-- 網絡狀態 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!--監聽網絡狀態--><receiver android:name=".receiver.NetWorkChangReceiver" ><intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /><action android:name="android.net.wifi.WIFI_STATE_CHANGED" /><action android:name="android.net.wifi.STATE_CHANGE" /></intent-filter></receiver>此時就可以實時監聽網絡狀態了。
轉載于:https://www.cnblogs.com/xuanwei-qingfeng/p/7651906.html
總結
以上是生活随笔為你收集整理的Android实时监听网络状态的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员编程能力7个能力提升阶段分析
- 下一篇: 华莱士是哪国的企业 已经挂牌新三板