您的位置:首页 > 理论基础 > 计算机网络

Android 网络监听

2015-05-08 23:07 309 查看
1.添加权限

<uses-permission android:name="android.permission.INTERNET"/>                   <!-- 网络权限 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>       <!-- 网络检测 -->


2.BaseActivity

public class BaseActivity extends Activity {

private OnNetListener onNetListener;
protected NetBroadcastReceiver netBroadcastReceiver;

/**
* 注册net广播
*/
@Override
protected void onStart() {
// TODO Auto-generated method stub
IntentFilter filter = new IntentFilter();
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
netBroadcastReceiver = new NetBroadcastReceiver();
registerReceiver(netBroadcastReceiver, filter);
super.onStart();
}

@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
/**
* 关闭net广播
*/
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(netBroadcastReceiver);
}

/**
* 网络广播监听
* @author Administrator
*
*/
class NetBroadcastReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
int NetType = -1;
String NetName = "没有网络";
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = mConnectivityManager.getActiveNetworkInfo();
if(netInfo != null && netInfo.isAvailable()){
switch (netInfo.getType()) {
case ConnectivityManager.TYPE_MOBILE:NetType = 0;break;
case ConnectivityManager.TYPE_WIFI:NetType = 1;break;
case ConnectivityManager.TYPE_ETHERNET:NetType = 2;break;
default:
break;
}
NetName = netInfo.getTypeName();
}
onNetListener.onNetLoader(NetType,NetName);

}

}
public void setOnNetListener(OnNetListener onNetListener){
this.onNetListener = onNetListener;
}
public abstract interface OnNetListener{
/**
* -1 :无网络   0:2g/3G     1:wifi 2:有线网
* @param netType
* @param NetName
*/
public abstract void onNetLoader(int netType,String NetName);
}

}


继承BaseActivity ,在使用的地方调用回调函数

setOnNetListener(new OnNetListener() {
@Override
public void onNetLoader(int netType, String NetName) {
// TODO Auto-generated method stub
Toast.makeText(LoginActivity.this, NetName, Toast.LENGTH_SHORT).show();
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android网络