Android 程式實時監聽網路變化狀態
阿新 • • 發佈:2019-02-16
public class MainActivity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); initReceiver(); } /** * 註冊網路監聽的廣播 */ private void initReceiver() { IntentFilter timeFilter = new IntentFilter(); timeFilter.addAction("android.net.ethernet.ETHERNET_STATE_CHANGED"); timeFilter.addAction("android.net.ethernet.STATE_CHANGE"); timeFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); timeFilter.addAction("android.net.wifi.WIFI_STATE_CHANGED"); timeFilter.addAction("android.net.wifi.STATE_CHANGE"); timeFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); registerReceiver(netReceiver, timeFilter); } @Override protected void onDestroy() { super.onDestroy(); if (netReceiver != null) { unregisterReceiver(netReceiver); netReceiver = null; } } BroadcastReceiver netReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService( Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo != null && networkInfo.isAvailable()) { int type2 = networkInfo.getType(); String typeName = networkInfo.getTypeName(); tv.setText(type2 + "--" + typeName); switch (type2) { case 0://移動 網路 2G 3G 4G 都是一樣的 實測 mix2s 聯通卡 Log.d("Feeee", "有網路"); break; case 1: //wifi網路 Log.d("Feeee", "wifi"); break; case 9: //網線連線 Log.d("Feeee", "有網路"); break; } } else {// 無網路 Log.d("Feeee", "無網路"); } } } }; }