Controlling the Wi-Fi programmatically

admin
Site Admin
Posts: 12
Joined: Thu Oct 03, 2013 5:49 pm

Controlling the Wi-Fi programmatically

Postby admin » Mon Feb 26, 2018 8:46 am

Tested on Android L
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;
            }
        }
    }




}

Return to “Services and Bonds”

Who is online

Users browsing this forum: No registered users and 1 guest