温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

通过Broadcast动态注册监听网络变化和网络类型

发布时间:2020-07-18 10:20:58 来源:网络 阅读:321 作者:jdijfijf 栏目:移动开发


package com.beini.networkchanges;


import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.net.ConnectivityManager;

import android.net.NetworkInfo;

import android.os.Bundle;

import android.telephony.TelephonyManager;

import android.util.Log;

import android.widget.TextView;


/**

 * 

 * @author beini

 * 

 */

public class MainActivity extends Activity {


private NetworkChangeReceive networkChangeReceive;

private TextView txtShowNetWorkeSate;


@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

txtShowNetWorkeSate = (TextView) findViewById(R.id.txt_showNetWorkeSate);

inintReceiver();

}


private void inintReceiver() {

IntentFilter intentFilter = new IntentFilter();

intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");

networkChangeReceive = new NetworkChangeReceive();

registerReceiver(networkChangeReceive, intentFilter);


}


class NetworkChangeReceive extends BroadcastReceiver {


@Override

public void onReceive(Context context, Intent intent) {

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo networkInfo = connectivityManager

.getActiveNetworkInfo();

if (networkInfo != null && networkInfo.isAvailable()) {

txtShowNetWorkeSate.setText(getString(R.string.net_aviable)

+ getNetWorkType(networkInfo));

} else {

txtShowNetWorkeSate.setText(getString(R.string.net_unaviable));

}

}

}


@Override

protected void onDestroy() {

super.onDestroy();

unregisterReceiver(networkChangeReceive);

}


/**

* 获取网络 2g,3g, 4g;通过networkInfo .getSubtype()会得到网络的类型,

* 用networkInfo.getSubtypeName()会得到网络的名字。

*/

public String getNetWorkType(NetworkInfo networkInfo) {

// int subType = networkInfo.getSubtype();

// String subTypeName = networkInfo.getSubtypeName();

//

int type = networkInfo.getType();

// String typeName = networkInfo.getTypeName();

//

// Log.i("beini", "subType=" + type + "   " + "typeName=" + typeName);

// Log.i("beini", "subType=" + subType + "   " + "subTypeName="

// + subTypeName);

if (type == ConnectivityManager.TYPE_WIFI) {

return getString(R.string.net_wifi);

} else if (type == ConnectivityManager.TYPE_MOBILE) {

return getnetworkChange();

}

return "";

}


public String getnetworkChange() {

TelephonyManager mTelephonyManager = (TelephonyManager) getApplication()

.getSystemService(Context.TELEPHONY_SERVICE);

int networkType = mTelephonyManager.getNetworkType();

switch (networkType) {

case TelephonyManager.NETWORK_TYPE_GPRS:

case TelephonyManager.NETWORK_TYPE_EDGE:

case TelephonyManager.NETWORK_TYPE_CDMA:

case TelephonyManager.NETWORK_TYPE_1xRTT:

case TelephonyManager.NETWORK_TYPE_IDEN:

return "2G";

case TelephonyManager.NETWORK_TYPE_UMTS:

case TelephonyManager.NETWORK_TYPE_EVDO_0:

case TelephonyManager.NETWORK_TYPE_EVDO_A:

case TelephonyManager.NETWORK_TYPE_HSDPA:

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:

return "3G";

case TelephonyManager.NETWORK_TYPE_LTE:

return "4G";

default:

return "Unknown";

}

}

}


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI