Android 简单的网络变化监听器
16lz
2021-01-23
广播分为动态和静态广播,此案例为动态广播
package com.yoostar.summary.utils;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.widget.Toast;/** * ================================================ * 作 者:zhoujianan * 版 本:v1.0 * 创建日期:2019/8/28 * 描 述: * 修订历史: * ================================================ */public class NetworkReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); //说明当前有网络 if (networkInfo != null && networkInfo.isAvailable()) { int type = networkInfo.getType(); switch (type) { case ConnectivityManager.TYPE_MOBILE: Toast.makeText(context, "当前移动网络正常", Toast.LENGTH_SHORT).show(); break; case ConnectivityManager.TYPE_WIFI: Toast.makeText(context, "当前WIFI网络正常", Toast.LENGTH_SHORT).show(); break; case ConnectivityManager.TYPE_ETHERNET: Toast.makeText(context, "当前以太网网络正常", Toast.LENGTH_SHORT).show(); break; } } else { //说明当前没有网络 Toast.makeText(context, "当前网络异常", Toast.LENGTH_SHORT).show(); } } }}
package com.yoostar.summary.http.activity;import android.content.IntentFilter;import android.net.ConnectivityManager;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.widget.TextView;import com.yoostar.summary.R;import com.yoostar.summary.utils.Logger;import com.yoostar.summary.utils.NetworkReceiver;/** * ================================================ * 作 者:zhoujianan * 版 本:v1.0 * 创建日期:2019/8/28 * 描 述: * 修订历史: * ================================================ */public class NetworkActivity extends AppCompatActivity { private TextView networkTv; private NetworkReceiver mNetReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_network); initView(); initNetworkReceiver(); } private void initNetworkReceiver() { mNetReceiver = new NetworkReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(mNetReceiver, filter); } private void initView() { TextView textView = findViewById(R.id.network_tv); } @Override protected void onDestroy() { super.onDestroy(); Logger.i(Logger._TJ, "onDestroy"); unregisterReceiver(mNetReceiver); }}
Manifest.xml 中需要增加的网络权限
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <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"/>
更多相关文章
- Android 监听网络变化然后刷新页面
- [置顶] Android动态添加控件约束位置
- android开启和关闭移动网络
- Android中使用HttpURLConnection和HttpClient实现GET和POST请求
- android网络访问兼容
- Android实现动态显示或隐藏密码输入框的内容
- android播放网络音频