Android:如何检查3G是否启用?

时间:2012-12-06 12:17:00

标签: android settings 3g

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

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

正在返回当前的网络状态,这可能导致我的方向错误,因为如果当前状态为2G,则可能意味着3G被禁用或仅在特定位置无法使用3G模式。

4 个答案:

答案 0 :(得分:2)

在LG GT540手机上测试后更新:

您可以使用Settings.Secure来读取首选网络模式,如以下代码所示:

ContentResolver cr = getContentResolver();
int value = Secure.getInt(cr, "preferred_network_mode");

在带有CM 7.1固件的LG GT540上,我有四个选项:

  • GSM / WCDM(自动) - 上面的代码返回 3
  • 仅限WCDMA - 上述代码返回 2
  • 仅限GSM - 上面的代码返回 1
  • GMS / WCDMA(WCMDA首选) - 上面的代码返回 0

当然,GSM是2G,WCDMA是3G。请注意,这不会为您提供有关哪个连接当前处于活动状态的信息(前提是您同时允许这两个连接)。为此,请参阅@ VikashKLumar的回答。

答案 1 :(得分:1)

您可以使用

查看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网络。

答案 2 :(得分:0)

只需拨打×#×#4636#×#×进入手机信息并查看是否有GSM只有你的手机不支持3G,如果是WCDMA预先设定你的手机可以使用3G

答案 3 :(得分:-1)

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