1

在 Android 中有什么方法可以确定我们是否已经连接到某些 Wifi 或 Wifi Direct 或热点。

如果是,请告诉我怎么做?我需要找到所有 3 个(wifi/hotspot/wifi direct)并根据答案在我的应用程序中做一些事情。

4

2 回答 2

0

这是一个代码快照,希望它对您有用!

public static int getNetworkType(Context context) {
    ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

    if (connectivity != null) { 
        // 获取网络连接管理的对象
        NetworkInfo info = connectivity.getActiveNetworkInfo();

        if (info != null && info.isConnected()) {
            // 判断当前网络是否已经连接
            if (info.getState() == NetworkInfo.State.CONNECTED) {
                if (info.getTypeName().equalsIgnoreCase("WIFI")) {
                    return MrDefines.NETTYPE_WIFI;
                } else {
                    Cursor mCursor = context.getContentResolver().query(
                            Uri.parse("content://telephony/carriers"), 
                            new String[] {"name"}, "current=1", 
                            null, null);

                    if(mCursor != null && mCursor.moveToFirst()){
                        String name = mCursor.getString(0);
                        mCursor.close();

                        if(name.equalsIgnoreCase("cmnet"))
                            return MrDefines.NETTYPE_CMNET;
                        else if(name.equalsIgnoreCase("cmwap"))
                            return MrDefines.NETTYPE_CMWAP;
                    }else if (mCursor != null) {
                        mCursor.close();
                    }

                }
            }
        }
    }

    return MrDefines.NETTYPE_UNKNOW;
}
于 2013-02-26T14:38:33.357 回答
0

我认为 WifiManager 和 ConnectivityManager 可能是您需要的东西。看看参考资料

http://developer.android.com/reference/android/net/wifi/WifiManager.html

http://developer.android.com/reference/android/net/ConnectivityManager.html

于 2013-02-26T14:39:00.610 回答