廣播:四大組件之一,你的應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數據網絡可用時)進行接收并作出響應,廣播接收器沒有用戶界面。然而,它們可以啟動一個activity或serice來響應它們接收到的消息,或者用NotificationManager來通知用戶。通知可以用很多種方式來吸引用戶的注意力——閃動背燈、震動、播放聲音等。一般來說是在狀態欄上放一個持久的圖標,用戶可以打開它并獲取消息。
- 想要攔截的廣播
- 攔截到廣播之后做得動作
- 注冊廣播
- 取消注冊
package com.example.bbw.broadcastdemo;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private NetworkChangeReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//決定攔截哪條廣播
receiver = new NetworkChangeReceiver();
registerReceiver(receiver,intentFilter);//注冊
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);//取消注冊
}
private class NetworkChangeReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable()){
Toast.makeText(getApplicationContext(),"network is available",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"network is unavailable",Toast.LENGTH_SHORT).show();
}
}
}
}
取得權限:
<uses-permission android:name="android.permission.ACCE SS_NETWORK_STATE"/>