1,注冊廣播,一般使用靜動態注冊,即當程序退出的時候廣播接受者就收不到消息使用方法context.registerReceiver()方法在MainActivity中的OnStart()方法中執行注冊,代碼:
IntentFilter intentFilter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION); this.registerReceiver(judgeNetIsConnectedReceiver, intentFilter);
在onStop()方法中解除綁定
if(this.judgeNetIsConnectedReceiver!=null){ this.unregisterReceiver(judgeNetIsConnectedReceiver); }
2,不多說,直接看我們的代碼,創建一個BroadCaseReceiver的子類
package com.example.queryencyclopediademo01.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.widget.Toast; /** * 聲明網絡是否連接成功的廣播接受者 * @author dell * */ public class JudgeNetIsConnectedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //得到是否沒有網絡連接成功 boolean isNotConnected=intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); if(!isNotConnected || judgeNetIsConnected(context)){ Toast.makeText(context, "網絡連接成功!", Toast.LENGTH_LONG).show(); }else{ Toast.makeText(context, "您的網絡不給力,請檢查網絡!", Toast.LENGTH_LONG).show(); } } /** * 判斷網絡連接是否成功 * @param context 上下文對象 * @return 網絡連接是否成功 */ public static boolean judgeNetIsConnected(Context context) { //得到連接管理器對象 ConnectivityManager connectivityManager= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo= connectivityManager.getActiveNetworkInfo(); if(networkInfo==null){ return false; } return networkInfo.isConnected(); } }