安卓:如何检查3G是否启用或不?(Android: How to check whether 3G

2019-08-03 14:40发布

我需要知道3G连接是否允许在设备上或不。 我不想知道什么是当前的网络状态,因为如果你设置“网络模式”,在“移动网络设置”屏幕设置为“自动”网络状态可能是要么2G或3G。 我只是想知道哪些设置中选择那里 - 2G,3G或自动(后两者对我来说意味着相同)。

无论telephonyManager.getNetworkType()ConnectivityManage.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState()

正在返回当前的网络状态,这可能会导致我在一个错误的方向,因为如果目前的状态是2G的,这可能意味着3G是禁用或只是3G模式是在特定的位置不可用。

Answer 1:

关于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的答案。



Answer 2:

您可以通过使用检查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网络。



Answer 3:

只需拨打×#×#4636#×#×进入手机信息,看下来,如果有GSM只有你的手机不支持3G,如果它是WCDMA prefferd您的手机可以使用3G



Answer 4:

/**
 * 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


文章来源: Android: How to check whether 3G is enabled or not?