1

我正在编写一个监听连接变化的广播接收器。

我的目标是检查 2g 网络是否可用(是否有 wifi)。

我一直在阅读几篇文章并重写我的课程,但无法得到正确的结果......

任何帮助都会很棒...

4

4 回答 4

2

如果您真的只关心使用 2G,这将起作用。

private boolean is2gNetwork() {
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo network = conMgr.getActiveNetworkInfo();

    // Check we're connected with a mobile network
    if (null != network && network.isConnectedOrConnecting()
            && network.getType() == ConnectivityManager.TYPE_MOBILE) {

        // Check we're on GPRS or EDGE
        final int subType = network.getSubtype();
        return subType == TelephonyManager.NETWORK_TYPE_EDGE
                || subType == TelephonyManager.NETWORK_TYPE_GPRS;
    }

    return false;
}
于 2013-01-25T12:36:08.763 回答
0

尝试使用ConnectivityManagergetActiveNetworkInfo()的方法。

于 2013-01-25T11:22:34.370 回答
0

试试这个。

   ConnectivityManager con = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (con != null) {
    NetworkInfo info = con.getActiveNetworkInfo();
    if (info != null && (info.isAvailable() || !info .isConnected())) {
    // do your code part
    }
    }
于 2013-01-25T11:26:31.807 回答
0

试试这个

  public void CheckStatus() {               

    ConnectivityManager connectionstate = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo network = connectionstate.getActiveNetworkInfo(); 

    if (network != null && network.isConnected() == true) {
        Toast.makeText(this, "Network Available", Toast.LENGTH_SHORT).show();           
    } else {            
        Toast.makeText(this, "Network Not Available", Toast.LENGTH_SHORT).show();    

        .show();         
    }
}
于 2013-01-25T11:35:41.630 回答