From 09a0a571907341a5e2c1f9fb9f684e37de1a511e Mon Sep 17 00:00:00 2001 From: Henrique Jotha Date: Tue, 21 Feb 2023 21:54:22 +0100 Subject: [PATCH] Added the ability to enable/disable ADB Wi-Fi This commit adds the capability to manage ADB Wi-Fi through termux-api, resolving an issue where users were unable to run the settings command despite having the WRITE_SECURE_SETTINGS permission. With this enhancement, users can easily toggle ADB wifi on or off, offering greater flexibility and control in Termux. The WRITE_SECURE_SETTINGS permission must be granted to com.termux.api --- app/src/main/AndroidManifest.xml | 1 + .../com/termux/api/TermuxApiReceiver.java | 6 +++++ .../java/com/termux/api/apis/AdbWifiAPI.java | 26 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 app/src/main/java/com/termux/api/apis/AdbWifiAPI.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8411d0003..b0d1cba18 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -36,6 +36,7 @@ + diff --git a/app/src/main/java/com/termux/api/TermuxApiReceiver.java b/app/src/main/java/com/termux/api/TermuxApiReceiver.java index 6efaafe16..6ae76dbe6 100644 --- a/app/src/main/java/com/termux/api/TermuxApiReceiver.java +++ b/app/src/main/java/com/termux/api/TermuxApiReceiver.java @@ -8,6 +8,7 @@ import android.provider.Settings; import android.widget.Toast; +import com.termux.api.apis.AdbWifiAPI; import com.termux.api.apis.AudioAPI; import com.termux.api.apis.BatteryStatusAPI; import com.termux.api.apis.BrightnessAPI; @@ -264,6 +265,11 @@ private void doWork(Context context, Intent intent) { case "WifiEnable": WifiAPI.onReceiveWifiEnable(this, context, intent); break; + case "AdbWifiEnable": + if (TermuxApiPermissionActivity.checkAndRequestPermissions(context, intent, Manifest.permission.WRITE_SECURE_SETTINGS)) { + AdbWifiAPI.onReceive(this, context, intent); + } + break; default: Logger.logError(LOG_TAG, "Unrecognized 'api_method' extra: '" + apiMethod + "'"); } diff --git a/app/src/main/java/com/termux/api/apis/AdbWifiAPI.java b/app/src/main/java/com/termux/api/apis/AdbWifiAPI.java new file mode 100644 index 000000000..c60c5b4cc --- /dev/null +++ b/app/src/main/java/com/termux/api/apis/AdbWifiAPI.java @@ -0,0 +1,26 @@ +package com.termux.api.apis; + +import android.content.ContentResolver; +import android.content.Context; +import android.content.Intent; +import android.provider.Settings; +import com.termux.api.TermuxApiReceiver; +import com.termux.api.util.ResultReturner; +import com.termux.shared.logger.Logger; + +public class AdbWifiAPI { + + private static final String LOG_TAG = "AdbWifiAPI"; + + public static void onReceive(final TermuxApiReceiver receiver, final Context context, final Intent intent) { + Logger.logDebug(LOG_TAG, "onReceive"); + + final ContentResolver contentResolver = context.getContentResolver(); + + boolean enabled = intent.getBooleanExtra("enabled", true); + + Settings.Global.putInt(contentResolver, "adb_wifi_enabled", enabled?1:0); + + ResultReturner.noteDone(receiver, intent); + } +}