Android 對手機網絡的檢測和監(jiān)聽的方法示例
此次分享內容

使用BroadcastReceiver廣播接收器來接收網絡狀態(tài)(采用系統(tǒng)廣播)
BroadcastReceiver作為Android四大組件之一;
Android:BroadcastReceiver廣播接收器最全面解析
網絡權限
<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("網絡狀態(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);
//獲取移動數據連接的信息
NetworkInfo dataNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
Toast.makeText(context, "WIFI已連接,移動數據已連接", Toast.LENGTH_SHORT).show();
} else if (wifiNetworkInfo.isConnected() && !dataNetworkInfo.isConnected()) {
Toast.makeText(context, "WIFI已連接,移動數據已斷開", Toast.LENGTH_SHORT).show();
} else if (!wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
Toast.makeText(context, "WIFI已斷開,移動數據已連接", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "WIFI已斷開,移動數據已斷開", Toast.LENGTH_SHORT).show();
}
//API大于23時使用下面的方式進行網絡監(jiān)聽
}else {
System.out.println("API level 大于23");
//獲得ConnectivityManager對象
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//獲取所有網絡連接的信息
Network[] networks = connMgr.getAllNetworks();
//用于存放網絡連接信息
StringBuilder sb = new StringBuilder();
//通過循環(huán)將網絡信息逐個取出來
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>
//檢測網絡變化的acton
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
至此,今天分享完畢,這樣就可以實現對網絡狀態(tài)的實時監(jiān)聽了
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- Android 7.0 監(jiān)聽網絡變化的示例代碼
- android 監(jiān)聽網絡狀態(tài)的變化及實戰(zhàn)的示例代碼
- Android 動態(tài)注冊監(jiān)聽網絡變化實例詳解
- Android 監(jiān)聽網絡狀態(tài)方法詳解
- Android編程監(jiān)聽網絡連接狀態(tài)改變的方法
- Android 實時監(jiān)測(監(jiān)聽)網絡連接狀態(tài)變化
- Android 廣播監(jiān)聽網絡狀態(tài)詳解及實例代碼
- Android網絡狀態(tài)實時監(jiān)聽實例代碼(二)
- Android 網絡狀態(tài)實時監(jiān)聽代碼實例(一)
- Android中監(jiān)聽判斷網絡連接狀態(tài)的方法
相關文章
Java Base64位編碼與String字符串的相互轉換,Base64與Bitmap的相互轉換實例代碼
這篇文章主要介紹了Java Base64位編碼與String字符串的相互轉換,Base64與Bitmap的相互轉換實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-03-03
Android使用Theme自定義Activity進入退出動畫的方法
這篇文章主要介紹了Android使用Theme自定義Activity進入退出動畫的方法,涉及Android的Activity屬性設置與資源操作技巧,需要的朋友可以參考下2016-07-07
Android實現socket通信統(tǒng)一接口的方法
這篇文章主要介紹了Android實現socket通信統(tǒng)一接口?,實現了統(tǒng)一接口之后確實可以使后續(xù)修改實現更加方便,程序結構也更加工程化,需要的朋友可以參考下2021-12-12
Android樣式的開發(fā):layer-list實例詳解
本文主要介紹Android樣式開發(fā)layer-list,這里整理了詳細的資料,及簡單示例代碼有興趣的小伙伴可以參考下2016-09-09
ionic App 解決android端在真機上tab處于頂部的問題
這篇文章主要介紹了ionic App 解決android端在真機上tab處于頂部的問題的相關資料,需要的朋友可以參考下2017-06-06

