用户是否启用了移动数据?

时间:2011-10-20 14:40:36

标签: android

我想获得“使用移动网络”设置值(true或false)。有一种方法可以知道是否启用了wifi,可以这样做:

WifiManager wm = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
int state = wm.getWifiState();
boolean pref = state == WifiManager.WIFI_STATE_ENABLED || state == WifiManager.WIFI_STATE_ENABLING;

但是如何对数据进行相同的检查呢?

3 个答案:

答案 0 :(得分:1)

我希望它有所帮助:)

ConnectivityManager connect = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

Boolean isConnected = connect.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected();

答案 1 :(得分:1)

你可以试试这个:

public boolean getMobileDataEnabled() throws Exception {
    ConnectivityManager mcm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
    Class ownerClass = mcm.getClass();
    Method method = ownerClass.getMethod("getMobileDataEnabled");
    return (Boolean)method.invoke(mcm);
}

并将权限添加到AndroidManifest.xml

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

答案 2 :(得分:0)

您是否尝试过使用getDataState()课程中的TelephonyManager

TelephonyManager tm = (TelephonyManager)Context.getSystemService (Context.TELEPHONY_SERVICE);
int state = tm.getDataState();
boolean pref = state == TelephonyManager.DATA_CONNECTED;

这应该检查数据连接的状态。