我是靠谱客的博主 顺心乌龟,最近开发中收集的这篇文章主要介绍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、可能还有许多不完善的地方,希望大神指出所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部