我需要知道3G连接是否允许在设备上或不。 我不想知道什么是当前的网络状态,因为如果你设置“网络模式”,在“移动网络设置”屏幕设置为“自动”网络状态可能是要么2G或3G。 我只是想知道哪些设置中选择那里 - 2G,3G或自动(后两者对我来说意味着相同)。
无论telephonyManager.getNetworkType()
和ConnectivityManage.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState()
正在返回当前的网络状态,这可能会导致我在一个错误的方向,因为如果目前的状态是2G的,这可能意味着3G是禁用或只是3G模式是在特定的位置不可用。
关于LG GT540手机测试后更新:
您可以使用Settings.Secure
阅读首选网络模式,如下面的代码:
ContentResolver cr = getContentResolver();
int value = Secure.getInt(cr, "preferred_network_mode");
在我的LG GT540与CM 7.1固件,我有四个选项:
- GSM / WCDM(自动) -上面的代码返回3
- WCDMA仅-上面的代码返回2
- GSM仅-上面的代码返回1
- GMS / WCDMA(WCMDA优选的) -上述返回0的代码
当然,GSM是2G和WCDMA是3G。 请注意,这并不为您提供哪些连接是当前活动的信息(前提是你让两者)。 对于这一点,看到@ VikashKLumar的答案。
您可以通过使用检查3G
boolean is3G3 = (telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSUPA);
boolean is3G2 = (telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSPA);
boolean is3G = (telephonyManager.getNetworkType() == TelephonyManager.NETWORK_TYPE_HSDPA);
这些网络是3G网络。
只需拨打×#×#4636#×#×进入手机信息,看下来,如果有GSM只有你的手机不支持3G,如果它是WCDMA prefferd您的手机可以使用3G
/**
* Checks if we have a valid Internet Connection on the device.
* @param ctx
* @return True if device has internet
*
* Code from: http://www.androidsnippets.org/snippets/131/
*/
public static boolean haveInternet(Context ctx) {
NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info == null || !info.isConnected()) {
return false;
}
if (info.isRoaming()) {
// here is the roaming option you can change it if you want to
// disable internet while roaming, just return false
return false;
}
return true;
}
You also need
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
in AndroidMainfest.xml