import java.io.BufferedReader;
import java.io.DataInputStream;


import java.io.DataOutputStream;


import java.io.InputStreamReader;


import java.util.ArrayList;


import java.util.List;


import java.util.regex.Matcher;


import java.util.regex.Pattern;


public class WifiManage {

    public List<WifiInfo> Read() throws Exception {
        List<WifiInfo> wifiInfos = new ArrayList<WifiInfo>();
        Process process = null;
        DataOutputStream dataOutputStream = null;


        DataInputStream dataInputStream = null;


        StringBuffer wifiConf = new StringBuffer();


        try {


            process = Runtime.getRuntime().exec("su");


            dataOutputStream = new DataOutputStream(process.getOutputStream());


            dataInputStream = new DataInputStream(process.getInputStream());


            dataOutputStream


                    .writeBytes("cat /data/misc/wifi/*.conf\n");


            dataOutputStream.writeBytes("exit\n");


            dataOutputStream.flush();


            InputStreamReader inputStreamReader = new InputStreamReader(


                    dataInputStream, "UTF-8");


            BufferedReader bufferedReader = new BufferedReader(


                    inputStreamReader);


            String line = null;


            while ((line = bufferedReader.readLine()) != null) {


                wifiConf.append(line);


            }


            bufferedReader.close();


            inputStreamReader.close();


            process.waitFor();


        } catch (Exception e) {


            throw e;


        } finally {


            try {


                if (dataOutputStream != null) {


                    dataOutputStream.close();


                }


                if (dataInputStream != null) {


                    dataInputStream.close();


                }


                process.destroy();


            } catch (Exception e) {


                throw e;


            }


        }


        Pattern network = Pattern.compile("network=\\{([^\\}]+)\\}", Pattern.DOTALL);


        Matcher networkMatcher = network.matcher(wifiConf.toString());


        while (networkMatcher.find()) {


            String networkBlock = networkMatcher.group();


            Pattern ssid = Pattern.compile("ssid=\"([^\"]+)\"");


            Matcher ssidMatcher = ssid.matcher(networkBlock);


            if (ssidMatcher.find()) {


                WifiInfo wifiInfo = new WifiInfo();


                wifiInfo.SSID = ssidMatcher.group(1);


                Pattern psk = Pattern.compile("psk=\"([^\"]+)\"");


                Matcher pskMatcher = psk.matcher(networkBlock);


                if (pskMatcher.find()) {


                    wifiInfo.Password = pskMatcher.group(1);


                } else {


                    wifiInfo.Password = "无密码";


                }


                wifiInfos.add(wifiInfo);


            }


        }


        return wifiInfos;

    }


}


 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐