Giter Site home page Giter Site logo

linecode / react-native-android-wifi Goto Github PK

View Code? Open in Web Editor NEW

This project forked from devstepbcn/react-native-android-wifi

0.0 1.0 0.0 991 KB

A react-native module for viewing and connecting to Wifi networks on Android devices.

License: ISC License

JavaScript 0.76% Java 99.24%

react-native-android-wifi's Introduction

react-native-android-wifi

A react-native module for viewing and connecting to Wifi networks on Android devices.

example app

Installation

Add it to your android project

npm install react-native-android-wifi --save

Install the native dependencies

Use react-native link to install native dependencies automatically:

react-native link react-native-android-wifi

or do it manually as described here.

Example usage

import wifi from 'react-native-android-wifi';

Permissions: Starting with Android API 25, apps must be granted the ACCESS_COARSE_LOCATION (or ACCESS_FINE_LOCATION) permission in order to obtain results.

try {
      const granted = await PermissionsAndroid.request(
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
        {
          'title': 'Wifi networks',
          'message': 'We need your permission in order to find wifi networks'
        }
      )
      if (granted === PermissionsAndroid.RESULTS.GRANTED) {
        console.log("Thank you for your permission! :)");
      } else {
        console.log("You will not able to retrieve wifi available networks list");
      }
    } catch (err) {
      console.warn(err)
    }

Wifi connectivity status:

wifi.isEnabled((isEnabled) => {
  if (isEnabled) {
    console.log("wifi service enabled");
  } else {
    console.log("wifi service is disabled");
  }
});

Enable/Disable wifi service:

//Set TRUE to enable and FALSE to disable; 
wifi.setEnabled(true);

Sign device into a specific network:

This method doesn't have a callback when connection succeeded, check this issue. Added support for 'WPA2 PSK' wifi security mode and handling SSID for Lollipop and Kitkat.

//found returns true if ssid is in the range
wifi.findAndConnect(ssid, password, (found) => {
  if (found) {
    console.log("wifi is in range");
  } else {
    console.log("wifi is not in range");
  }
});

Disconnect from current wifi network

wifi.disconnect();

Get current SSID

wifi.getSSID((ssid) => {
  console.log(ssid);
});

Get current BSSID

wifi.getBSSID((bssid) => {
  console.log(bssid);
});

Get all wifi networks in range

/*
wifiStringList is a stringified JSONArray with the following fields for each scanned wifi
{
  "SSID": "The network name",
  "BSSID": "The address of the access point",
  "capabilities": "Describes the authentication, key management, and encryption schemes supported by the access point"
  "frequency":"The primary 20 MHz frequency (in MHz) of the channel over which the client is communicating with the access point",
  "level":"The detected signal level in dBm, also known as the RSSI. (Remember its a negative value)",
  "timestamp":"Timestamp in microseconds (since boot) when this result was last seen"
}
*/
wifi.loadWifiList((wifiStringList) => {
  var wifiArray = JSON.parse(wifiStringList);
    console.log(wifiArray);
  },
  (error) => {
    console.log(error);
  }
);

connectionStatus returns true or false depending on whether device is connected to wifi

wifi.connectionStatus((isConnected) => {
  if (isConnected) {
      console.log("is connected");
    } else {
      console.log("is not connected");
  }
});

Get connected wifi signal strength

//level is the detected signal level in dBm, also known as the RSSI. (Remember its a negative value)
wifi.getCurrentSignalStrength((level) => {
  console.log(level);
});

Get connected wifi frequency

wifi.getFrequency((frequency) => {
  console.log(frequency);
})

Get current IP

//get the current network connection IP
wifi.getIP((ip) => {
  console.log(ip);
});

Get DHCP Server Adress

//get the DHCP server IP
wifi.getDhcpServerAddress((ip) => {
  console.log(ip);
});

Remove/Forget the Wifi network from mobile by SSID, returns boolean This method will remove the wifi network as per the passed SSID from the device list.

wifi.isRemoveWifiNetwork(ssid, (isRemoved) => {
  console.log("Forgetting the wifi device - " + ssid);
});

Starts native Android wifi network scanning and returns list Hard refresh the Android wifi scan, implemented using BroadcastReceiver to ensure that it automatically detects new wifi connections available.

wifi.reScanAndLoadWifiList((wifiStringList) => {
  var wifiArray = JSON.parse(wifiStringList);
  console.log('Detected wifi networks - ',wifiArray);
},(error)=>{
  console.log(error);
});

Method to force wifi usage. Android by default sends all requests via mobile data if the connected wifi has no internet connection.

//Set true/false to enable/disable forceWifiUsage.
//Is important to enable only when communicating with the device via wifi
//and remember to disable it when disconnecting from device.
wifi.forceWifiUsage(true);

Method to get connection status of a forced network (because it takes some time to be set up).

//Callback returns true if the process of forcing network usage is finished
wifi.connectionStatusOfBoundNetwork((isBound) => {
    if (isBound) {
        console.log('Network is bound');
    } else {
        console.log('Network isn\'t bound');
    }
});

Add a hidden wifi network and connect to it

//Callback returns true if network added and tried to connect to it successfully
//It may take up to 15s to connect to hidden networks
wifi.connectToHiddenNetwork(ssid, password, (networkAdded) => {});

react-native-android-wifi's People

Contributors

adhambadr avatar alexanderkosianchuk avatar bondparkerbond avatar btav avatar devstepbcn avatar freerk avatar gigby avatar gsinovsky avatar hjames9 avatar iamcc avatar leecrossley avatar mojabyte avatar parthbarot-botreeconsulting avatar sharnik avatar sina-s avatar tuaminen avatar ymrdf avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.