Skip to content

Commit 2a9f4f8

Browse files
committed
try to toggle wifi without root first, and use root as fallback if the former doesn't work
1 parent 3616031 commit 2a9f4f8

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ android {
77

88
defaultConfig {
99
applicationId "it.pgp.currenttoggles"
10-
minSdkVersion 21
10+
minSdkVersion 21 // for sdk 19 and lower, just use the great PowerToggles :)
1111
targetSdkVersion 28
1212
versionCode 111220816
1313
versionName "1.1.1"

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
1111
<uses-permission android:name="android.permission.CAMERA"/>
1212
<uses-permission android:name="android.permission.FLASHLIGHT"/>
13+
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
1314
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
1415
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
1516
<uses-permission android:name="android.permission.TETHER_PRIVILEGED" />

app/src/main/java/it/pgp/currenttoggles/MainActivity.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import android.content.SharedPreferences;
99
import android.hardware.camera2.CameraManager;
1010
import android.net.Uri;
11+
import android.net.wifi.WifiManager;
1112
import android.os.Build;
1213
import android.os.Bundle;
1314
import android.os.Handler;
@@ -49,6 +50,16 @@ public static void launchWriteSettings(Context context) {
4950
context.startActivity(i);
5051
}
5152

53+
public static void toggleWifi(Context context) {
54+
WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
55+
boolean stateToSet = !wifiManager.isWifiEnabled();
56+
if(!wifiManager.setWifiEnabled(stateToSet)) {
57+
// try with root
58+
toggleDataWifiBluetoothGps(context, "wifi", Misc::isWifiEnabled);
59+
}
60+
else Toast.makeText(context, "Wifi "+(stateToSet?"enabled":"disabled"), Toast.LENGTH_SHORT).show();
61+
}
62+
5263
public static void toggleDataWifiBluetoothGps(Context context, String channel, II ii) { // channel: "data" or "wifi"
5364
String[][] cmdsAndErrors = {
5465
{channel + " currently DISABLED -> enabling...", "enable"},
@@ -275,7 +286,7 @@ public void toggle(View v) {
275286
toggleDataWifiBluetoothGps(this, "data", Misc::isDataConnectionEnabled);
276287
break;
277288
case R.id.toggleWifi:
278-
toggleDataWifiBluetoothGps(this, "wifi", Misc::isWifiEnabled);
289+
toggleWifi(this);
279290
break;
280291
case R.id.toggleBt:
281292
// toggleDataWifiBluetoothGps(this, "bluetooth", Misc::isBluetoothEnabled); // no need to do this using root

app/src/main/java/it/pgp/currenttoggles/MainWidget.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public void onReceive(Context context, Intent intent) {
125125
switch(a) {
126126
case onDemandWifi:
127127
Log.d(LOG_PREFIX,"onDemand Wifi");
128-
MainActivity.toggleDataWifiBluetoothGps(context, "wifi", Misc::isWifiEnabled);
128+
MainActivity.toggleWifi(context);
129129
break;
130130
case onDemandData:
131131
Log.d(LOG_PREFIX,"onDemand Data");

0 commit comments

Comments
 (0)