廣播小案例-監聽系統網絡狀態 --Android開發
阿新 • • 發佈:2018-06-23
演示 系統網絡 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開發