1. 程式人生 > >廣播小案例-監聽系統網絡狀態 --Android開發

廣播小案例-監聽系統網絡狀態 --Android開發

演示 系統網絡 perm new reat inf roi ron str

本例通過廣播實現簡單的監聽系統網絡狀態改變的小案例。

1、案例效果演示

技術分享圖片

當手機連網後,系統提示“已連接網絡”,

技術分享圖片

當手機斷網後,系統提示“當前網絡不可用1”。

2、案例實現

在主活動中動態註冊廣播,然後寫一個內部類來接收系統廣播,下面是相關文件的核心代碼:

MainActivity.java:

public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//動態註冊廣播
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver = new NetworkChangeReceiver();

registerReceiver(networkChangeReceiver, intentFilter);
}

/**
* 活動被關閉後執行
*/
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(networkChangeReceiver);
}

class NetworkChangeReceiver extends BroadcastReceiver {//定義一個內部類用來接收廣播
@Override

public void onReceive(Context context, Intent intent) {
// Toast.makeText(context, "網絡狀態發生改變!",
// Toast.LENGTH_SHORT).show();
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

if (networkInfo != null && networkInfo.isAvailable()) {
Toast.makeText(context, "已連接網絡", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "當前網絡不可用", Toast.LENGTH_SHORT).show();
}
}
}
}

另外一定要配置網絡相關的權限,在這裏需要在AndroidManifest.xml中添加下面的代碼:

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

意思是允許程序訪問有關GSM網絡信息。

廣播小案例-監聽系統網絡狀態 --Android開發