对于一些需要网络的app,我们一般都会在进入app之前对网络进行实时判断,一般在app的引导页面(开启页面)中进行判断。
判断网络其实用的就是connectivityManager,但重点在于实时判断,用户在进入你的app 的时候一般在知道自己没网络的时候,会直接打开网络,这时你不能让用户重新退出你的app,重新进一遍吧。
- 在你的引导页面创建内部类(也可以单独创建一个类,这里我是在处理activity跳转的时候方便)
class ConnectionChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager=(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobNetInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
BSToast.showLong(context, "网络不可以用");
//告诉用户网络不可用
}else {
//在这里你可以进行activity的跳转或其他操作。
}
}
}
2.在引导页面的onCreate() 方法中注册
private void registerReceiver(){
IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
myReceiver=new ConnectionChangeReceiver();
this.registerReceiver(myReceiver, filter);
}
3.用完之后记得把广播注销了(在onStop或者onDestroy中),给app更好的运行空间
private void unregisterReceiver(){
this.unregisterReceiver(myReceiver);
}
注意权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
网上提供的去除广播的判断网络的代码:
1.判断是否有网络连接
public boolean isNetworkConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if (mNetworkInfo != null) {
return mNetworkInfo.isAvailable();
}
}
return false;
}
2.判断wifi网络是否可用:
public boolean isWifiConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWiFiNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mWiFiNetworkInfo != null) {
return mWiFiNetworkInfo.isAvailable();
}
}
return false;
}
3.判断手机网络(数据流量)是否可用
public boolean isMobileConnected(Context context) {
if (context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mMobileNetworkInfo = mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (mMobileNetworkInfo != null) {
return mMobileNetworkInfo.isAvailable();
}
}
return false;
}
4.判断网络类型(是wifi还是数据流量)
//返回值 -1:没有网络 1:WIFI网络2:wap网络3:net网络
public static int GetNetype(Context context)
{
int netType = -1;
ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if(networkInfo==null)
{
return netType;
}
int nType = networkInfo.getType();
if(nType==ConnectivityManager.TYPE_MOBILE)
{
if(networkInfo.getExtraInfo().toLowerCase().equals("cmnet"))
{
netType = 3;
}
else
{
netType = 2;
}
}
else if(nType==ConnectivityManager.TYPE_WIFI)
{
netType = 1;
}
return netType;
}
(学习来源于网络,回报于网络)