react-native-android-wifi
A react-native module for viewing and connecting to Wifi networks on Android devices. Based on ccmxy/react-native-wifi-module
Installation
Add it to your android project
npm install react-native-android-wifi --save
Install the native dependencies
You can use rnpm to add native dependencies automatically:
$ rnpm link
or do it manually as described below:
- In
android/setting.gradle
...
include ':app'
include ':react-native-android-wifi'
project(':react-native-android-wifi').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-android-wifi/android')
- In
android/app/build.gradle
...
dependencies {
...
compile project(':react-native-android-wifi')
}
- register module (in MainActivity.java)
On newer versions of React Native (0.18+):
import com.devstepbcn.wifi.AndroidWifiPackage; // <--- import
public class MainActivity extends ReactActivity {
......
/**
* A list of packages used by the app. If the app uses additional views
* or modules besides the default ones, add more packages here.
*/
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new AndroidWifiPackage(), // <------ add here
new MainReactPackage());
}
}
On older versions of React Native:
import com.devstepbcn.wifi.AndroidWifiPackage; // <--- import
public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
......
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModuleName("index.android")
.addPackage(new MainReactPackage())
.addPackage(new AndroidWifiPackage()) // <------ add here
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "ExampleRN", null);
setContentView(mReactRootView);
}
......
}
Example usage
var wifi = require('react-native-android-wifi')
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:
//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");
}
});
Get current SSID
wifi.getSSID((ssid) => {
console.log(ssid);
});
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);
});