android 获取当前隐藏和未隐藏wifi的加密方式(安全性)

1.一般WIFI加密有几种方式:

(1).WPA-PSK/WPA2-PSK(目前最安全家用加密)

(2).WPA/WPA2(较不安全)

(3).WEP(安全较差)

2.一般点击系统当前网络都会有弹出详细信息

那么这个安全性是怎么获取的呢?通过查阅系统源码可知:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WifiManager mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        WifiInfo info = mWifiManager.getConnectionInfo();

        // 得到配置好的网络连接
        List<WifiConfiguration> wifiConfigList = mWifiManager.getConfiguredNetworks();
        for (int i = 0; i < wifiConfigList.size(); i++) {
            Log.i("hefeng", wifiConfigList.get(i).toString());
            Log.i("hefeng", info.getSSID() + "||" + wifiConfigList.get(i).SSID);
            if (info.getSSID().equals(wifiConfigList.get(i).SSID)) {
                Log.e("hefeng", "当前网络安全性:" + getSecurity(wifiConfigList.get(i)));
            }
        }
    }

    /**
     * These values are matched in string arrays -- changes must be kept in sync
     */
    static final int SECURITY_NONE = 0;
    static final int SECURITY_WEP = 1;
    static final int SECURITY_PSK = 2;
    static final int SECURITY_EAP = 3;

    static int getSecurity(WifiConfiguration config) {
        if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) {
            return SECURITY_PSK;
        }
        if (config.allowedKeyManagement.get(KeyMgmt.WPA_EAP) || config.allowedKeyManagement.get(KeyMgmt.IEEE8021X)) {
            return SECURITY_EAP;
        }
        return (config.wepKeys[0] != null) ? SECURITY_WEP : SECURITY_NONE;
    }

这样就可以获取到了。这样做可以避免你的wifi ssid被隐藏了还可以获取到加密方式

3.一般获取加密方式是这样的,但是一旦你在路由器上面设置ssid隐藏了,你就搜索不到的

 public void getCipherType(Context context, String ssid) {
        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

        List<ScanResult> list = wifiManager.getScanResults();

        for (ScanResult scResult : list) {

            if (!TextUtils.isEmpty(scResult.SSID) && scResult.SSID.equals(ssid)) {
                String capabilities = scResult.capabilities;
                Log.i("hefeng","capabilities=" + capabilities);

                if (!TextUtils.isEmpty(capabilities)) {

                    if (capabilities.contains("WPA") || capabilities.contains("wpa")) {
                        Log.i("hefeng", "wpa");

                    } else if (capabilities.contains("WEP") || capabilities.contains("wep")) {
                        Log.i("hefeng", "wep");
                    } else {
                        Log.i("hefeng", "no");
                    }
                }
            }
        }
    }
时间: 2024-07-30 13:41:36

android 获取当前隐藏和未隐藏wifi的加密方式(安全性)的相关文章

【转】Android点击空白区域,隐藏输入法软键盘

原文网址:http://www.2cto.com/kf/201505/401382.html 很多时候,我们在使用应用时,会出现输入法软键盘弹出的问题,通常情况下,我们默认会使用户点击返回键或者下一步对软键盘进行隐藏.为了更好的体验,我们可以实现当用户使用完毕软键盘时.点击空白区域即可实现隐藏的功能.效果如图所示: 代码实现 代码块语法遵循标准markdown代码,例如: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Android项目:输入法软键盘显示/隐藏的监听和控制,InputMethodManager用法研究

在项目开发中,用到编辑框的地方经常涉及到要监听或者控制软键盘的显示/隐藏状态.本以为这是很容易解决的一个小问题,没想到当初碰到这个问题才明白还得花点小心思才能整好.现将针对软键盘的显示/隐藏状态的监听/监控方法做一些总结,以备后用. 一.点击空白处隐藏软键盘 这是具有编辑框焦点的页面对输入法软键盘状态监听的一般需求和解决方法. 首先获得InputMethodManager:        InputMethodManager manager = (InputMethodManager) getS

个别无线终端无法搜索到无线路由器设置的SSID信号【未隐藏和关闭SSID】

在无线行业已经工作了不少年,这段时间接触了形形色色的各种各样无线路由器,作为售后工程师,发现不少客户或多或少都会遇到了各种问题,下面讲解常见的一种情况: "AP设置的WiFi名称未隐藏和关闭,但是个别无线终端无法搜索到设置的WIFI信号名称"!!! 出现这种情况,通常是下面原因导致: 常见第一种情况:个别小伙伴为了彰显个性,将无线路由器SSID设置为"个性"的中文SSID(例如:"XXX我爱你","我的WIFI我做主"等):

无线路由器设置的SSID名称,个别终端无法搜索到【未隐藏和关闭SSID】

在无线行业已经工作了不少年,这段时间接触了形形色色的各种各样无线路由器,作为售后工程师,发现不少客户或多或少都会遇到了各种问题,下面讲解常见的一种情况: "AP设置的WiFi名称未隐藏和关闭,但是个别无线终端无法搜索到设置的WIFI信号名称"!!! 出现这种情况,通常是下面原因导致: 常见第一种情况:个别小伙伴为了彰显个性,将无线路由器SSID设置为"个性"的中文SSID(例如:"XXX我爱你","我的WIFI我做主"等):

Android应用开发中如何使用隐藏API(转)

一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide标记的public类.方法或常量)是有原因的.其中很大的原因就是Android系统本身还在不断的进化发展中.从1.0.1.1到现在即将问世的Android 2.3.4. 这些隐藏的API本身可能是不稳定的,所以,使用隐藏API,意味着程序更差的兼容性. 如果要我给出建议的话,最好还是不要使用隐藏的API.不过有时为了实现Android应用某些特殊的功能或者效果,隐藏的API往往能发挥意想不到的作用.这些API具体能做些什么

Android获取当前连接的wifi名称

首先AndroidMainfest.xml文件中添加权限: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 获取WIFI信息状态的权限 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 获取网络状态改变的

Xamarin,mono for android 用一个APP启动其他隐藏应用程序

花费了好几个小时测试最终搞定了,Mono for android用一个APP启动其他隐藏应用程序. 直接看代码: 隐藏APP(被启动)要在manifest文件配置如下,去除原本的两个标签,修改成只有一个data <Activity> <activity android:icon="@drawable/icon" android:label="IOCPDroid" android:name="iocpdroid.IOCPActivity&q

Android 获取WIFI MAC地址的方法

1. 经常用法,调用Android的API:WifiManager <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo info = wifi.getConnectionInfo

Android应用开发中如何使用隐藏API

一开始需要说明的是,Google之所以要将一些API隐藏(指加上@hide 标记的public类.方法或常量)是有原因的.其中很大的原因就是Android系统本身还在不断的进化发展中.从1.0.1.1到现在即将问世的Android 2.3.4. 这些隐藏的API本身可能是不稳定的,所以,使用隐藏API,意味着程序更差的兼容性. 如果要我给出建议的话,最好还是不要使用隐藏的API.不过有时为了实现Android应用某些特殊的功能或者效果,隐藏的API往往能发挥意想不到的作用.这些API具体能做些什