Android動態注冊廣播,監聽網絡狀態變化,判斷網絡模式
注冊廣播監聽網絡連接和斷開狀態的變化,判斷網絡連接模式;
private ConnectivityManager mConnectivityManager; private NetworkInfo netInfo; /////////////監聽網絡狀態變化的廣播接收器 private BroadcastReceiver myNetReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) { mConnectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); netInfo = mConnectivityManager.getActiveNetworkInfo(); if(netInfo != null && netInfo.isAvailable()) { /////////////網絡連接 String name = netInfo.getTypeName(); if(netInfo.getType()==ConnectivityManager.TYPE_WIFI){ /////WiFi網絡 }else if(netInfo.getType()==ConnectivityManager.TYPE_ETHERNET){ /////有線網絡 }else if(netInfo.getType()==ConnectivityManager.TYPE_MOBILE){ /////////3g網絡 } } else { ////////網絡斷開 } } } }; /////////動態注冊廣播 IntentFilter mFilter = new IntentFilter(); mFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(myNetReceiver, mFilter); /////////解除廣播 if(myNetReceiver!=null){ unregisterReceiver(myNetReceiver); }
/////////發送廣播附加信息
Intent intent=new Intent();
intent.setAction(_ACTION);
intent.putExtra("msg", "hello");
mContext.sendBroadcast(intent);
////////接收廣播時判斷附加信息
public void onReceive(Context context, Intent intent) {
String msg=intent.getStringExtra("msg");
if(msg.equals("hello")){
............
}
}
-------------------------------------
////判斷GPS是否打開
public boolean isGpsEnabled(Context context) {
LocationManager locationManager = ((LocationManager) context
.getSystemService(Context.LOCATION_SERVICE));
List<String> accessibleProviders = locationManager.getProviders(true);
return accessibleProviders != null && accessibleProviders.size() > 0;
}