Hello everyone I am having trouble on detecting the type of Internet connection that I get on my phone. So I use my code and what happens is that when I am using wifi the application returns to me the type Wifi but when I am using 3g connection I get a message saying the application has closed. Anyone can give me some advice ? Many thanks.
So here is my code.
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Context context = getApplicationContext();
CharSequence text = "Hello toast!";
int duration = Toast.LENGTH_SHORT;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if ((tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSDPA)) {
text = "3g";// for 3g HSDPA networktype will be return as
// per testing(real) in device with 3g enable data
// and speed will also matters to decide 3g network type
} else if ((tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSPAP)) {
text= "4g"; // /No specification for the 4g but from wiki
// i found(HSPAP used in 4g)
// http://goo.gl/bhtVT
} else if ((tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_GPRS)) {
text= "GPRS";
} else if ((tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_EDGE)) {
text= "2g";
}
else if ((info.getType() == ConnectivityManager.TYPE_WIFI)
) {
text= "WIFI";
}
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
And my permissions in the Manifest.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Any idea ?
Documentation says:
http://developer.android.com/reference/android/net/ConnectivityManager.html#getActiveNetworkInfo%28%29
So maybe your
info
variable is NULL and causes a crash when you are not connected to any net.change your code to: