Controlling the Wi-Fi programmatically
Posted: Mon Feb 26, 2018 8:46 am
Tested on Android L
you need 2 buttons id: startwifiButton and stopwifiButton in your layout:
you need 2 buttons id: startwifiButton and stopwifiButton in your layout:
Code: Select all
package crokky.com.wifitest;
import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.net.wifi.WifiManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.os.Build;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
static final String TAG = "fdl ----";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(TAG, "onCreate");
Button b = findViewById(R.id.startwifiButton);
b.setOnClickListener(this);
b = findViewById(R.id.stopwifiButton);
b.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Log.d(TAG, "click start wifi");
switch (view.getId()) {
case R.id.startwifiButton:
startWifi();
break;
case R.id.stopwifiButton:
stopWifi();
break;
default:
Log.w(TAG, "button not defined");
}
}
private void stopWifi() {
Log.d(TAG, "stopWifi");
askForWifiPermission();
WifiManager mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
mWifiManager.setWifiEnabled(false);
}
private void startWifi() {
Log.d(TAG, "startWifi");
askForWifiPermission();
WifiManager mWifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
mWifiManager.setWifiEnabled(true);
}
private boolean askForWifiPermission() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Log.d(TAG, "check permission");
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "permission already granted");
return true;
} else {
Log.d(TAG, "ask for permission");
ActivityCompat.requestPermissions( this, new String[] {
Manifest.permission.CHANGE_WIFI_STATE}, 1);
return false;
}
}
return true;
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 2909: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.e("Permission", "Granted");
} else {
Log.e("Permission", "Denied");
}
return;
}
}
}
}