前言
此篇博客用於記錄系統的各種廣播狀態
廣播監聽開機
注冊靜態廣播
<receiver android:name=".receiver.MyReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>
添加權限
<!-- 接收開機廣播的權限,開機是很危險的行為,所以需要此權限 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
接收廣播
public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")){ L.e("設備開機了"); } } }
廣播監聽關機
注冊靜態廣播
<receiver android:name=".receiver.ShutdownReceiver"> <intent-filter> <action android:name="android.intent.action.ACTION_SHUTDOWN"/> </intent-filter> </receiver>
接收廣播
public class ShutdownReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.ACTION_SHUTDOWN")){ L.e("設備關機了..."); } } }
網絡變化廣播
注冊
IntentFilter networkChangeFilter = new IntentFilter(); networkChangeFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); NetWorkChangeReceiver netWorkChangeReceiver = new NetWorkChangeReceiver();//網絡變化廣播 registerReceiver(netWorkChangeReceiver, networkChangeFilter);
接收
public class NetWorkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent == null) { return; } String action = intent.getAction(); if (TextUtils.isEmpty(action)) { return; } if (!TextUtils.equals(action, ConnectivityManager.CONNECTIVITY_ACTION)) { return; } // 監聽網絡連接,包括wifi和移動數據的打開和關閉,以及連接上可用的連接都會接到監聽 Log.i("hcz", " CONNECTIVITY_ACTION "); //獲取聯網狀態的NetworkInfo對象 NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); if (info == null) { return; } if (NetworkInfo.State.CONNECTED != info.getState() || !info.isAvailable()) { EventBus.getDefault().post(new NetChangerEvent(false)); return; } int type = info.getType(); //如果當前的網絡連接成功並且網絡連接可用 if (type == ConnectivityManager.TYPE_WIFI || type == ConnectivityManager.TYPE_MOBILE) { Log.i("hcz", getConnectionType(info.getType()) + "連上"); EventBus.getDefault().post(new NetChangerEvent(true)); } } /** * 獲取連接類型 * * @param type type * @return String */ private String getConnectionType(int type) { String connType = ""; if (type == ConnectivityManager.TYPE_MOBILE) { connType = "3G網絡數據"; } else if (type == ConnectivityManager.TYPE_WIFI) { connType = "WIFI網絡"; } return connType; } }
時間變化廣播
注冊
IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_TIME_TICK); //時間變化廣播 registerReceiver(new TimeChangeReceiver(), intentFilter);
接收
public class TimeChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_TIME_TICK)) { LogUtils.d("時間變化"); } } }
end