Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
react-native-android-wifi
Advanced tools
A react-native implementation for viewing and connecting to Wifi networks on Android devices.
A react-native module for viewing and connecting to Wifi networks on Android devices.
npm install react-native-android-wifi --save
Use react-native link to install native dependencies automatically:
react-native link react-native-android-wifi
or do it manually as described here.
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) => {});
FAQs
A react-native implementation for viewing and connecting to Wifi networks on Android devices.
We found that react-native-android-wifi demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.