**
网络监听
**
这是我第一次写博客,又不好的地方勿喷
下面有我来为大家写一份有关于网络监听的代码:
public class Fragment2 extends Fragment {
private TextView fr2_tv;
AlertDialog dialog;
Chaxun chaxun;
IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment2, null);
initView(view);
chaxun=new Chaxun();
getActivity().registerReceiver(chaxun,filter);
return view;
}
private void initView(View view) {
fr2_tv = (TextView) view.findViewById(R.id.fr2_tv);
}
public class Chaxun extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connet= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//移动网络信息
NetworkInfo networkInfo=connet.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiInfo=connet.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!networkInfo.isConnected()&&!wifiInfo.isConnected()){
SetNet();
}else {
Toast.makeText(context, "网络已连接!", Toast.LENGTH_SHORT).show();
}
}
}
public void SetNet(){
dialog=new AlertDialog.Builder(getActivity()).setTitle("网络提示!").setMessage("网络错误!,请设置网络!").setPositiveButton("设置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent=null;
if (Build.VERSION.SDK_INT>10){
intent=new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);
}else {
intent=new Intent();
ComponentName componentName=new ComponentName("com.android.settings","ACTION_DATA_ROAMING_SETTINGS");
intent.setComponent(componentName);
intent.setAction("android.intent.action.VIEW");
}
startActivity(intent);
}
}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).setCancelable(false).show();
}
}
(注意:上面的代码只是示例,直接运行的话有待修改。)
在上面的代码是我平时做别的项目的代码,下面让我来介绍这段代码的意思,
在上面这段代码中其实最主要的是类名 Chaxun的内部类,
如果要做网络监听的朋友们首先要建一个类,来继承BroadcastReceiver这个广播组件
进行播放.
其中:ConnectivityManager主要管理和网络连接相关的操作
而
NetworkInfo networkInfo=connet.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiInfo=connet.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
是获取手机网络信息。
记住,一定要在上面注册广播
IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
getActivity().registerReceiver(chaxun,filter);
最后还需要在清单文件中注册权限。