欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android 對(duì)手機(jī)網(wǎng)絡(luò)的檢測(cè)和監(jiān)聽(tīng)的方法示例

 更新時(shí)間:2018年03月23日 14:27:27   作者:AND_Devil  
本篇文章主要介紹了Android 對(duì)手機(jī)網(wǎng)絡(luò)的檢測(cè)和監(jiān)聽(tīng)的方法示例,主要使用BroadcastReceiver廣播接收器來(lái)接收網(wǎng)絡(luò)狀態(tài),現(xiàn)在分享給大家,也給大家做個(gè)參考,有興趣的一起來(lái)了解一下

此次分享內(nèi)容

使用BroadcastReceiver廣播接收器來(lái)接收網(wǎng)絡(luò)狀態(tài)(采用系統(tǒng)廣播)

BroadcastReceiver作為Android四大組件之一;
Android:BroadcastReceiver廣播接收器最全面解析

網(wǎng)絡(luò)權(quán)限

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

自定義廣播接收器

public class NetWorkStateReceiver extends BroadcastReceiver {
  @Override
  public void onReceive(Context context, Intent intent) {

    System.out.println("網(wǎng)絡(luò)狀態(tài)發(fā)生變化");
    //檢測(cè)API是不是小于23,因?yàn)榈搅薃PI23之后getNetworkInfo(int networkType)方法被棄用
    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {

      //獲得ConnectivityManager對(duì)象
      ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

      //獲取ConnectivityManager對(duì)象對(duì)應(yīng)的NetworkInfo對(duì)象
      //獲取WIFI連接的信息
      NetworkInfo wifiNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
      //獲取移動(dòng)數(shù)據(jù)連接的信息
      NetworkInfo dataNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
      if (wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
        Toast.makeText(context, "WIFI已連接,移動(dòng)數(shù)據(jù)已連接", Toast.LENGTH_SHORT).show();
      } else if (wifiNetworkInfo.isConnected() && !dataNetworkInfo.isConnected()) {
        Toast.makeText(context, "WIFI已連接,移動(dòng)數(shù)據(jù)已斷開(kāi)", Toast.LENGTH_SHORT).show();
      } else if (!wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
        Toast.makeText(context, "WIFI已斷開(kāi),移動(dòng)數(shù)據(jù)已連接", Toast.LENGTH_SHORT).show();
      } else {
        Toast.makeText(context, "WIFI已斷開(kāi),移動(dòng)數(shù)據(jù)已斷開(kāi)", Toast.LENGTH_SHORT).show();
      }
//API大于23時(shí)使用下面的方式進(jìn)行網(wǎng)絡(luò)監(jiān)聽(tīng)
    }else {

      System.out.println("API level 大于23");
      //獲得ConnectivityManager對(duì)象
      ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

      //獲取所有網(wǎng)絡(luò)連接的信息
      Network[] networks = connMgr.getAllNetworks();
      //用于存放網(wǎng)絡(luò)連接信息
      StringBuilder sb = new StringBuilder();
      //通過(guò)循環(huán)將網(wǎng)絡(luò)信息逐個(gè)取出來(lái)
      for (int i=0; i < networks.length; i++){
        //獲取ConnectivityManager對(duì)象對(duì)應(yīng)的NetworkInfo對(duì)象
        NetworkInfo networkInfo = connMgr.getNetworkInfo(networks[i]);
        sb.append(networkInfo.getTypeName() + " connect is " + networkInfo.isConnected());
      }
      Toast.makeText(context, sb.toString(),Toast.LENGTH_SHORT).show();
    }
  }
}

注冊(cè)廣播

  1. 動(dòng)態(tài)注冊(cè)
  2. 靜態(tài)注冊(cè)

動(dòng)態(tài)注冊(cè)

public class MainActivity extends AppCompatActivity {

  NetWorkStateReceiver netWorkStateReceiver;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

  //在onResume()方法注冊(cè)
  @Override
  protected void onResume() {
    if (netWorkStateReceiver == null) {
      netWorkStateReceiver = new NetWorkStateReceiver();
    }
    IntentFilter filter = new IntentFilter();
    filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
    registerReceiver(netWorkStateReceiver, filter);
    System.out.println("注冊(cè)");
    super.onResume();
  }

  //onPause()方法注銷(xiāo)
  @Override
  protected void onPause() {
    unregisterReceiver(netWorkStateReceiver);
    System.out.println("注銷(xiāo)");
    super.onPause();
  }
}

靜態(tài)注冊(cè)

在AndroidManifest.xml進(jìn)行廣播的靜態(tài)注冊(cè)

<receiver android:name=".NetWorkStateReceiver"> 
  <intent-filter> 
//檢測(cè)網(wǎng)絡(luò)變化的acton
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
    <category android:name="android.intent.category.DEFAULT" /> 
  </intent-filter> 
</receiver> 

至此,今天分享完畢,這樣就可以實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)狀態(tài)的實(shí)時(shí)監(jiān)聽(tīng)了

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論