天天看點

Android 關于擷取WiFi 清單資訊

Android 關于擷取WiFi 清單資訊

在網上查找了好多頁面,都沒有一個可以完整查詢出wifi清單資訊的(有的是權限缺少問題)。這裡自己整理一份

AndroidMani.xml檔案中加入權限

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
           

布局頁面就是一個展示控件

<TextView
        android:id="@+id/showID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
           

在MainActivity.java檔案中,首先動态擷取權限再擷取wifi資訊,最後展示

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity---wifi";
    private TextView showTv;
    StringBuffer sb=new StringBuffer();
    @Override
    protected void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        showTv = (TextView) findViewById(R.id.showID);

        if (Build.VERSION.SDK_INT >= 23) {
            int REQUEST_CODE_CONTACT = 101;
            String[] permissions = {
                    Manifest.permission.ACCESS_COARSE_LOCATION,
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.CHANGE_NETWORK_STATE,
                    Manifest.permission.CHANGE_WIFI_STATE,
                    Manifest.permission.ACCESS_WIFI_STATE,
                    Manifest.permission.ACCESS_FINE_LOCATION,
                    Manifest.permission.ACCESS_NETWORK_STATE
            };
            //驗證是否許可權限
            for (String str : permissions) {
                if (this.checkSelfPermission(str) != PackageManager.PERMISSION_GRANTED) {
                    //申請權限
                    this.requestPermissions(permissions, REQUEST_CODE_CONTACT);
                }
            }
        }

        getWifiList();
        showTv.setText(sb);
    }

    //擷取wifi 清單
    public List<ScanResult> getWifiList() {
        WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
        //判斷wifi 是否開啟
        if (wifiManager.isWifiEnabled()) {
            Log.e(TAG, " wifi 打開");
            List<ScanResult> scanWifiList = wifiManager.getScanResults();
            List<ScanResult> wifiList = new ArrayList<>();
            if (scanWifiList != null && scanWifiList.size() > 0) {
                for (int i = 0; i < scanWifiList.size(); i++) {
                    ScanResult scanResult = scanWifiList.get(i);
                    sb.append(scanResult.SSID + "---" + scanResult.BSSID + "\n");
                    wifiList.add(scanResult);
                }
                return wifiList;
            } else {
                Log.e(TAG, "非常遺憾搜尋到wifi");
            }
        } else {
            Log.e(TAG, " wifi 關閉");
        }

        return null;
    }
}
           

記得打開GPS , 不出意外的話…

那麼。。。OK了