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

《第一行代码》5章 动态注册监听网络变化

2016-09-13 20:22 447 查看
注意:
需要在配置文件中 增加访问网络的权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

主要就是重写onReceiver();首先需要注册

增加几个新类:BroadcastReceiver,

package com.example.broadcasttest;

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.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver,intentFilter);//注册广播接收器,接收CONNECTIVITY_CHANGE这个广播
textView=(TextView) findViewById(R.id.tv);
}
@Override
protected void onDestroy(){
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}
class NetworkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context,Intent intent){
// Toast.makeText(context, "network changes", Toast.LENGTH_LONG).show();
//Log.d("demo","networkchanges");
// textView.setText("netWorkChanges");
ConnectivityManager connectionManager=(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);//
NetworkInfo networkInfo=connectionManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()){
Toast.makeText(context, "network is available", Toast.LENGTH_LONG).show();
}else {
Toast.makeText(context, "network is unavailable", Toast.LENGTH_SHORT).show();
}

}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息