Android 全域性監聽判斷有無網路
阿新 • • 發佈:2019-02-11
本人之前處理這個事情,網上很多的demo例子,都是在activity裡的,本人一直想在appliation中設定,結果很麻煩弄了很多類還是會有bug和crash,想在全域性設定判斷網路費了一會功夫,網上有大神說可以利用廣播實施監聽
下面分享自己的例子給大家,沒有那麼麻煩,很簡單
首先在Mainactivity
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); setBreoadcast(); } /** * 設定網路監聽 */ private void setBreoadcast() { BroadcastReceiver receiver=new NetBroadCastReciver(); IntentFilter filter=new IntentFilter(); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(receiver, filter); }
然後在一個廣播的類裡
public class NetBroadCastReciver extends BroadcastReceiver { /** * 只有當網路改變的時候才會 經過廣播。 */ private MyDialog dialog; private View view; @Override public void onReceive(Context context, Intent intent) { //此處是主要程式碼, //如果是在開啟wifi連線和有網路狀態下 if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); if (NetworkInfo.State.CONNECTED == info.getState()) { //連線狀態 處理自己的業務邏輯 EventBus.getDefault().post(new BroadCastEvent(SharePrefrence.BooleanBroadCast)); } else { Toast.makeText(context, "網路連結失敗", Toast.LENGTH_SHORT).show(); context.startActivity(new Intent(context, BooleanNetWork.class)); } } } }