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了