您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何在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(); } } }
注冊廣播
動態注冊
靜態注冊
動態注冊
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中對手機網絡進行檢測,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。