How to check whether a particular device supports 4G networks in Android?
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo[] info = cm.getAllNetworkInfo(); for(int i=0; i <info.length; i++){ Log.i("netinfo"+i, info[i].getType()+""); Log.i("netinfo"+i, info[i].getTypeName()); Log.i("netinfo"+i, info[i].getSubtype()+""); Log.i("netinfo"+i, info[i].getSubtypeName()); }
Use this piece of code and get all available options on the device. I think you should be able to get all capabilities of the device.
and network type info is present in http://developer.android.com/reference/android/telephony/TelephonyManager.html.
I think network types added from API level 11 are for 4g. Check it yourself.
This might work. It should check for WiMax 4g:
private boolean is4gavailable() { ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mobileInfo = connec.getNetworkInfo(0); NetworkInfo wifiInfo = connec.getNetworkInfo(1); NetworkInfo wimaxInfo = connec.getNetworkInfo(6); if (wimaxInfo!=null) { return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting() || wimaxInfo.isConnectedOrConnecting(); } else { return mobileInfo.isConnectedOrConnecting() || wifiInfo.isConnectedOrConnecting(); }}
Try looking at this for a little more clarification.
Context context = MainActivity.this; public synchronized static boolean isNetAvailable(Context context){ boolean isNetAvailable=false; if ( context != null ){ ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if ( mgr != null ) { boolean mobileNetwork = false; boolean wifiNetwork = false; boolean wiMaxNetwork = false; boolean mobileNetworkConnecetd = false; boolean wifiNetworkConnecetd = false; boolean wiMaxNetworkConnected = false; NetworkInfo mobileInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); NetworkInfo wifiInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); NetworkInfo wiMaxInfo = mgr.getNetworkInfo(ConnectivityManager.TYPE_WIMAX); if ( mobileInfo != null ) mobileNetwork = mobileInfo.isAvailable(); if ( wifiInfo != null ) wifiNetwork = wifiInfo.isAvailable(); if(wiMaxInfo != null) wiMaxNetwork = wiMaxInfo.isAvailable(); if(wifiNetwork == true || mobileNetwork == true || wiMaxNetwork == true){ mobileNetworkConnecetd = mobileInfo.isConnectedOrConnecting(); wifiNetworkConnecetd = wifiInfo.isConnectedOrConnecting(); wiMaxNetworkConnected = wiMaxInfo.isConnectedOrConnecting(); } isNetAvailable = ( mobileNetworkConnecetd || wifiNetworkConnecetd || wiMaxNetworkConnected ); } } return isNetAvailable; }
Check for value of isNetAvailable is true in all the 3 cases this works for me, wish work for u too
Note : 4G availability will be introduces API level 8 onwards.