我是靠谱客的博主 顺心乌龟,最近开发中收集的这篇文章主要介绍android 广播获取网络状态及判断234G1、定义一个Receiver 3、可能还有许多不完善的地方,希望大神指出,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1、定义一个Receiver
<span style="font-size:14px;"><span style="font-size:18px;">package com.example.net;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.telephony.TelephonyManager;
import android.util.Log;
public class NetWorkReceiver extends BroadcastReceiver{
private Context context;
private static final String TAG = "NetWork";
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
if(isNetworkConnected(context)){
Log.e(TAG,"网络已连接");
if(isWifiConnected(context)){
Log.v(TAG, "当前为wifi连接");
} else {
String c = isFastMobileNetwork(context);
Log.e(TAG,"当前网络为"+c);
}
} else {
Log.e(TAG,"网络无连接");
}
}
//网络是否有连接
public boolean isNetworkConnected(Context context) {
if(context != null) {
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
if(mNetworkInfo != null && mNetworkInfo.isAvailable()) {
return mNetworkInfo.isAvailable();
}
}
return false;
}
//是否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;
}
//对应的网络类型
public static String isFastMobileNetwork(Context context) {
TelephonyManager telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
switch (telephonyManager.getNetworkType()) {
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN:
return "2G";
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_HSPAP:
case 17: // TelephonyManager.NETWORK_TYPE_TD_SCDMA:
return "3G";
case TelephonyManager.NETWORK_TYPE_LTE:
case 18: // TelephonyManager.NETWORK_TYPE_IWLAN:
return "4G";
default:
return "NETWORK_CLASS_UNKNOWN";
}
}
}</span>
</span>
<span style="font-size:14px;">2、在合适的地方注册注销广播</span>
<span style="font-size:14px;">private NetWorkReceiver nwr = new NetWorkReceiver();//注册 </span>
<span style="font-size:14px;">IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(nwr, intentFilter);
//注销if(nwr!=null){
unregisterReceiver(nwr);
}</span>
3、可能还有许多不完善的地方,希望大神指出
最后
以上就是顺心乌龟为你收集整理的android 广播获取网络状态及判断234G1、定义一个Receiver 3、可能还有许多不完善的地方,希望大神指出的全部内容,希望文章能够帮你解决android 广播获取网络状态及判断234G1、定义一个Receiver 3、可能还有许多不完善的地方,希望大神指出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复