**
** 这是我第一次写博客,又不好的地方勿喷 下面有我来为大家写一份有关于网络监听的代码:
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);最后还需要在清单文件中注册权限。