From 38f4c73b6c1737cc221d5e6d45c09ef855807deb Mon Sep 17 00:00:00 2001 From: Benjamin Loison Date: Tue, 10 Mar 2026 01:41:19 +0100 Subject: [PATCH 1/2] Add SettingAPI --- .../com/termux/api/TermuxApiReceiver.java | 4 +++ .../java/com/termux/api/apis/SettingAPI.java | 27 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 app/src/main/java/com/termux/api/apis/SettingAPI.java diff --git a/app/src/main/java/com/termux/api/TermuxApiReceiver.java b/app/src/main/java/com/termux/api/TermuxApiReceiver.java index b752864b..c753d81c 100644 --- a/app/src/main/java/com/termux/api/TermuxApiReceiver.java +++ b/app/src/main/java/com/termux/api/TermuxApiReceiver.java @@ -31,6 +31,7 @@ import com.termux.api.apis.NotificationListAPI; import com.termux.api.apis.SAFAPI; import com.termux.api.apis.SensorAPI; +import com.termux.api.apis.SettingAPI; import com.termux.api.apis.ShareAPI; import com.termux.api.apis.SmsInboxAPI; import com.termux.api.apis.SmsSendAPI; @@ -195,6 +196,9 @@ private void doWork(Context context, Intent intent) { break; case "Sensor": SensorAPI.onReceive(context, intent); + break; + case "Setting": + SettingAPI.onReceive(this, context, intent); break; case "Share": ShareAPI.onReceive(this, context, intent); diff --git a/app/src/main/java/com/termux/api/apis/SettingAPI.java b/app/src/main/java/com/termux/api/apis/SettingAPI.java new file mode 100644 index 00000000..3f8cbb58 --- /dev/null +++ b/app/src/main/java/com/termux/api/apis/SettingAPI.java @@ -0,0 +1,27 @@ +package com.termux.api.apis; + +import android.content.Context; +import android.content.Intent; + +import com.termux.api.TermuxApiReceiver; +import com.termux.api.util.ResultReturner; +import com.termux.shared.logger.Logger; + +import com.termux.shared.android.SettingsProviderUtils; +import com.termux.shared.android.SettingsProviderUtils.SettingNamespace; + +public class SettingAPI { + + private static final String LOG_TAG = "SettingAPI"; + + public static void onReceive(TermuxApiReceiver apiReceiver, final Context context, Intent intent) { + Logger.logDebug(LOG_TAG, "onReceive"); + + ResultReturner.returnData(apiReceiver, intent, out -> { + String namespace = intent.getStringExtra("namespace").toUpperCase(); + SettingNamespace settingNamespace = SettingNamespace.valueOf(namespace); + Object settingValue = SettingsProviderUtils.getSettingsValue(context, settingNamespace, SettingsProviderUtils.SettingType.STRING, intent.getStringExtra("key"), ""); + out.write((String)settingValue + "\n"); + }); + } +} From a005b1549739814a3673be8f1c18b7b9e2a49c08 Mon Sep 17 00:00:00 2001 From: Benjamin Loison Date: Fri, 13 Mar 2026 04:30:04 +0100 Subject: [PATCH 2/2] Add `termux-setting put` --- .../java/com/termux/api/apis/SettingAPI.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/termux/api/apis/SettingAPI.java b/app/src/main/java/com/termux/api/apis/SettingAPI.java index 3f8cbb58..0175d8c3 100644 --- a/app/src/main/java/com/termux/api/apis/SettingAPI.java +++ b/app/src/main/java/com/termux/api/apis/SettingAPI.java @@ -10,6 +10,8 @@ import com.termux.shared.android.SettingsProviderUtils; import com.termux.shared.android.SettingsProviderUtils.SettingNamespace; +import android.provider.Settings; + public class SettingAPI { private static final String LOG_TAG = "SettingAPI"; @@ -18,10 +20,18 @@ public static void onReceive(TermuxApiReceiver apiReceiver, final Context contex Logger.logDebug(LOG_TAG, "onReceive"); ResultReturner.returnData(apiReceiver, intent, out -> { - String namespace = intent.getStringExtra("namespace").toUpperCase(); - SettingNamespace settingNamespace = SettingNamespace.valueOf(namespace); - Object settingValue = SettingsProviderUtils.getSettingsValue(context, settingNamespace, SettingsProviderUtils.SettingType.STRING, intent.getStringExtra("key"), ""); - out.write((String)settingValue + "\n"); + String key = intent.getStringExtra("key"); + switch (intent.getStringExtra("action")) { + case "get": + String namespace = intent.getStringExtra("namespace").toUpperCase(); + SettingNamespace settingNamespace = SettingNamespace.valueOf(namespace); + Object settingValue = SettingsProviderUtils.getSettingsValue(context, settingNamespace, SettingsProviderUtils.SettingType.STRING, key, ""); + out.write((String)settingValue + "\n"); + break; + case "put": + Settings.System.putString(context.getContentResolver(), key, intent.getStringExtra("value")); + break; + } }); } }