亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Android中對手機網絡進行檢測

發布時間:2021-04-08 17:56:48 來源:億速云 閱讀:406 作者:Leah 欄目:移動開發

本篇文章為大家展示了如何在Android中對手機網絡進行檢測,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

如何在Android中對手機網絡進行檢測

使用BroadcastReceiver廣播接收器來接收網絡狀態(采用系統廣播)

網絡權限

<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("網絡狀態發生變化");
    //檢測API是不是小于23,因為到了API23之后getNetworkInfo(int networkType)方法被棄用
    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {

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

      //獲取ConnectivityManager對象對應的NetworkInfo對象
      //獲取WIFI連接的信息
      NetworkInfo wifiNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
      //獲取移動數據連接的信息
      NetworkInfo dataNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
      if (wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
        Toast.makeText(context, "WIFI已連接,移動數據已連接", Toast.LENGTH_SHORT).show();
      } else if (wifiNetworkInfo.isConnected() && !dataNetworkInfo.isConnected()) {
        Toast.makeText(context, "WIFI已連接,移動數據已斷開", Toast.LENGTH_SHORT).show();
      } else if (!wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
        Toast.makeText(context, "WIFI已斷開,移動數據已連接", Toast.LENGTH_SHORT).show();
      } else {
        Toast.makeText(context, "WIFI已斷開,移動數據已斷開", Toast.LENGTH_SHORT).show();
      }
//API大于23時使用下面的方式進行網絡監聽
    }else {

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

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

注冊廣播

  1. 動態注冊

  2. 靜態注冊

動態注冊

public class MainActivity extends AppCompatActivity {

  NetWorkStateReceiver netWorkStateReceiver;

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

  //在onResume()方法注冊
  @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("注冊");
    super.onResume();
  }

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

靜態注冊

在AndroidManifest.xml進行廣播的靜態注冊

<receiver android:name=".NetWorkStateReceiver"> 
  <intent-filter> 
//檢測網絡變化的acton
    <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
    <category android:name="android.intent.category.DEFAULT" /> 
  </intent-filter> 
</receiver>

上述內容就是如何在Android中對手機網絡進行檢測,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灵宝市| 蒲城县| 郎溪县| 万全县| 建德市| 濉溪县| 环江| 镇巴县| 岑巩县| 雅江县| 淅川县| 遂昌县| 湄潭县| 桓台县| 西宁市| 磐石市| 郁南县| 鹤庆县| 高碑店市| 玉林市| 钟山县| 汉中市| 武乡县| 林州市| 商城县| 涪陵区| 开江县| 富蕴县| 两当县| 吴堡县| 罗山县| 长汀县| 临猗县| 日喀则市| 普安县| 宜春市| 宜黄县| 孟村| 惠来县| 淮南市| 富顺县|