기술참고자료/Android
[Android] BroadcastReceiver에서 wifi / 3G 분기하기
농사꾼봉팔
2011. 5. 6. 13:33
public class ULNetworkReceiver extends BroadcastReceiver {
private Activity activity;
public ULNetworkReceiver() {
super();
}
public ULNetworkReceiver(Activity activity) {
this.activity = activity;
}
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// 네트웍에 변경이 일어났을때 발생하는 부분
if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
try {
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
NetworkInfo mobNetInfo =
connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
WifiManager wifiManager =
(WifiManager) activity.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if(wifiInfo != null) {
/** WIFI 활성화 했고, AP 사용가능 */
if(wifiInfo.getIpAddress()>0 && wifiInfo.getSSID()!=null
&& wifiInfo.getSupplicantState().toString().equals("COMPLETED")) {
}
/** WIFI 활성화 했지만, AP 사용불가 */
else if(wifiInfo.getIpAddress()==0&&wifiInfo.getSSID()==null
&& (!wifiInfo.getSupplicantState().toString().equals("UNINITIALIZED")
|| wifiInfo.getSupplicantState().toString().equals("INACTIVE")
|| wifiInfo.getSupplicantState().toString().equals("SCANNING"))) {
Log.e("net info >>> ", "wifi use / AP not use ...");
}
/** WIFI 설정을 활성화 하지않은 경우/ 3G 사용가능할때 */
else if(activeNetInfo!=null && activeNetInfo.getTypeName().equals("mobile") &&
(wifiInfo.getSupplicantState().toString().equals("UNINITIALIZED")
|| wifiInfo.getSupplicantState().toString().equals("SCANNING")
|| wifiInfo.getSupplicantState().toString().equals("INACTIVE") )) {
Log.e("net info >>> ", "wifi not use / 3G success ...");
}
/** 3G, WIFI 둘 다 없을 경우 */
else {
Log.e("getSupplicantState >>> ", wifiInfo.getSupplicantState().toString()+"...");
}
}
} catch (Exception e){
}
}
}
}