权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
import android.Manifest;
import android.content.DialogInterface;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "WifiDemo";
ListView lv;
WifiManager wifiManager; //管理wifi
ArrayAdapter<String> adapter;
List<String> wifiSSIDs = new ArrayList<>();
WifiUtil wifiUtil;
// WifiInfo //wifi信息
// ScanResult //扫描结果
// WifiConfiguration //wifi配置 如果需要连接wifi 必须先配置好 加密方式 wifi SSID password
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wifiUtil = new WifiUtil(this);
lv= (ListView) findViewById(R.id.lv);
//1.WifiManager实例化
wifiManager= (WifiManager) getSystemService(WIFI_SERVICE);
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, wifiSSIDs);
lv.setAdapter(adapter);
//动态权限
if (Build.VERSION.SDK_INT >= 23) {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, 1);
}
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
//连接wifi
ScanResult sr = scanResults.get(position);//获取点击的扫描信息
final String SSID = sr.SSID;
WifiConfiguration wifiConfiguration = new WifiConfiguration();
final int type = wifiUtil.getType(sr.capabilities);
if (type == 1) {
WifiConfiguration config = wifiUtil.createWifiInfo(SSID, "", type);
int networkId = wifiManager.addNetwork(config);
wifiManager.enableNetwork(networkId, true);
} else {
//有密码
final EditText et = new EditText(MainActivity.this);
et.setHint("输入wifi密码");
new AlertDialog.Builder(Mai