Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
8b05fd6
Update source file strings.xml
sameerasw May 20, 2026
8458709
New translations strings.xml (Arabic)
sameerasw May 20, 2026
abd5aa7
New translations strings.xml (German)
sameerasw May 20, 2026
8226e82
New translations strings.xml (Hebrew)
sameerasw May 20, 2026
a5d7f21
New translations strings.xml (Italian)
sameerasw May 20, 2026
cc8be1f
New translations strings.xml (Japanese)
sameerasw May 20, 2026
9d39a31
New translations strings.xml (Polish)
sameerasw May 20, 2026
6d13f03
New translations strings.xml (Russian)
sameerasw May 20, 2026
422f7db
New translations strings.xml (Portuguese, Brazilian)
sameerasw May 20, 2026
5d924a5
New translations strings.xml (English)
sameerasw May 20, 2026
2da8f7f
New translations strings.xml (Romanian)
sameerasw May 20, 2026
3698c44
New translations strings.xml (French)
sameerasw May 20, 2026
1c0150a
New translations strings.xml (Spanish)
sameerasw May 20, 2026
58d1c3b
New translations strings.xml (Afrikaans)
sameerasw May 20, 2026
73ec445
New translations strings.xml (Catalan)
sameerasw May 20, 2026
15c80f9
New translations strings.xml (Czech)
sameerasw May 20, 2026
8f79080
New translations strings.xml (Danish)
sameerasw May 20, 2026
91462a2
New translations strings.xml (Greek)
sameerasw May 20, 2026
d4738fd
New translations strings.xml (Finnish)
sameerasw May 20, 2026
1b314fc
New translations strings.xml (Hungarian)
sameerasw May 20, 2026
7fe5c6e
New translations strings.xml (Korean)
sameerasw May 20, 2026
85172db
New translations strings.xml (Dutch)
sameerasw May 20, 2026
93e5ab8
New translations strings.xml (Norwegian)
sameerasw May 20, 2026
5a89556
New translations strings.xml (Portuguese)
sameerasw May 20, 2026
2f96566
New translations strings.xml (Serbian (Cyrillic))
sameerasw May 20, 2026
a9d9804
New translations strings.xml (Swedish)
sameerasw May 20, 2026
bb3b9aa
New translations strings.xml (Turkish)
sameerasw May 20, 2026
f175753
New translations strings.xml (Ukrainian)
sameerasw May 20, 2026
67640fb
New translations strings.xml (Chinese Simplified)
sameerasw May 20, 2026
69dd774
New translations strings.xml (Chinese Traditional)
sameerasw May 20, 2026
680b216
New translations strings.xml (Vietnamese)
sameerasw May 20, 2026
1aaf639
New translations strings.xml (Sinhala)
sameerasw May 20, 2026
3fe2426
New translations strings.xml (Acholi)
sameerasw May 20, 2026
44c23be
New translations strings.xml (Indonesian)
sameerasw May 20, 2026
6507a8e
Update source file strings.xml
sameerasw May 20, 2026
094c020
New translations strings.xml (Spanish)
sameerasw May 20, 2026
c2feaf9
New translations strings.xml (French)
sameerasw May 20, 2026
e9e9f8b
New translations strings.xml (Turkish)
sameerasw May 20, 2026
966bf84
New translations strings.xml (German)
sameerasw May 21, 2026
5167e6e
fix: catch SecurityException reading hidden settings in ShutUpShortcut
anirudhlakhotia May 21, 2026
af05a93
fix: drop generic Exception catch from safeReadSetting
anirudhlakhotia May 21, 2026
00e00c5
New translations strings.xml (German)
sameerasw May 21, 2026
032f7f5
fix: catch SecurityException reading hidden settings in ShutUpShortcu…
sameerasw May 21, 2026
68468bb
New Crowdin updates (#448)
sameerasw May 21, 2026
eda5ba0
version: upgraded to v15.2
sameerasw May 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ android {
applicationId = "com.sameerasw.essentials"
minSdk = 26
targetSdk = 37
versionCode = 45
versionName = "15.1"
versionCode = 46
versionName = "15.2"

val whatsNewCounter = 2
buildConfigField("int", "WHATS_NEW_COUNTER", whatsNewCounter.toString())
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.sameerasw.essentials

import android.content.ContentResolver
import android.content.Intent
import android.os.Bundle
import android.provider.Settings
import android.util.Log
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
Expand Down Expand Up @@ -139,15 +141,15 @@ class ShutUpShortcutActivity : ComponentActivity() {
)

secureSettings.forEach { key ->
Settings.Secure.getString(contentResolver, key)
safeReadSetting(contentResolver, SettingsTable.SECURE, key)
?.let { originalSettings["secure:$key"] = it }
}
systemSettings.forEach { key ->
Settings.System.getString(contentResolver, key)
safeReadSetting(contentResolver, SettingsTable.SYSTEM, key)
?.let { originalSettings["system:$key"] = it }
}
globalSettings.forEach { key ->
Settings.Global.getString(contentResolver, key)
safeReadSetting(contentResolver, SettingsTable.GLOBAL, key)
?.let { originalSettings["global:$key"] = it }
}

Expand All @@ -163,7 +165,8 @@ class ShutUpShortcutActivity : ComponentActivity() {
// as some apps check this specific setting directly.
if (config.disableUsbDebugging) {
val current =
Settings.Global.getString(contentResolver, Settings.Global.ADB_ENABLED) ?: "0"
safeReadSetting(contentResolver, SettingsTable.GLOBAL, Settings.Global.ADB_ENABLED)
?: "0"
if (current == "1") {
if (!originalSettings.containsKey("global:${Settings.Global.ADB_ENABLED}")) {
originalSettings["global:${Settings.Global.ADB_ENABLED}"] = "1"
Expand All @@ -173,7 +176,8 @@ class ShutUpShortcutActivity : ComponentActivity() {
}

if (config.disableWirelessDebugging) {
val current = Settings.Global.getString(contentResolver, "adb_wifi_enabled") ?: "0"
val current =
safeReadSetting(contentResolver, SettingsTable.GLOBAL, "adb_wifi_enabled") ?: "0"
if (current == "1") {
if (!originalSettings.containsKey("global:adb_wifi_enabled")) {
originalSettings["global:adb_wifi_enabled"] = "1"
Expand All @@ -183,8 +187,9 @@ class ShutUpShortcutActivity : ComponentActivity() {
}

if (config.disableAccessibility) {
val current = Settings.Secure.getString(
val current = safeReadSetting(
contentResolver,
SettingsTable.SECURE,
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES
)
if (!current.isNullOrEmpty()) {
Expand All @@ -204,6 +209,25 @@ class ShutUpShortcutActivity : ComponentActivity() {
}
}

private enum class SettingsTable { SYSTEM, SECURE, GLOBAL }

// Android 12+ throws SecurityException reading @hide settings that aren't
// @Readable (e.g. show_key_presses). WRITE_SECURE_SETTINGS doesn't cover reads.
private fun safeReadSetting(
resolver: ContentResolver,
table: SettingsTable,
key: String
): String? = try {
when (table) {
SettingsTable.SYSTEM -> Settings.System.getString(resolver, key)
SettingsTable.SECURE -> Settings.Secure.getString(resolver, key)
SettingsTable.GLOBAL -> Settings.Global.getString(resolver, key)
}
} catch (e: SecurityException) {
Log.w("ShutUpShortcut", "Skipping unreadable setting $table:$key", e)
null
}

private fun launchApp(packageName: String) {
val intent = packageManager.getLaunchIntentForPackage(packageName)
if (intent != null) {
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/values-ach-rUG/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,12 @@
<!-- Features -->
<string name="feat_screen_off_widget_title">Gin ma ki lwongo ni screen off widget</string>
<string name="feat_screen_off_widget_desc">Gin ma pe nen me juku gin ma ki neno ni</string>
<string name="screen_off_method_title">Screen Off Method</string>
<string name="screen_off_method_accessibility">Accessibility</string>
<string name="screen_off_method_input">Input</string>
<string name="screen_off_widget_input_permission_id">Screen off widget - Input</string>
<string name="require_double_tap_title">Require double tap</string>
<string name="require_double_tap_desc">To screen off</string>
<string name="feat_statusbar_icons_title">cal me Statusbar</string>
<string name="feat_statusbar_icons_desc">Gwoko kit ma lanyut me statusbar nen kwede</string>
<string name="feat_caffeinate_title">Caffeinete</string>
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/values-af-rZA/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,12 @@
<!-- Features -->
<string name="feat_screen_off_widget_title">Skerm af widget</string>
<string name="feat_screen_off_widget_desc">Onsigbare legstuk om die skerm af te skakel</string>
<string name="screen_off_method_title">Screen Off Method</string>
<string name="screen_off_method_accessibility">Accessibility</string>
<string name="screen_off_method_input">Input</string>
<string name="screen_off_widget_input_permission_id">Screen off widget - Input</string>
<string name="require_double_tap_title">Require double tap</string>
<string name="require_double_tap_desc">To screen off</string>
<string name="feat_statusbar_icons_title">Statusbalk ikone</string>
<string name="feat_statusbar_icons_desc">Beheer statusbalk ikone sigbaarheid</string>
<string name="feat_caffeinate_title">Kafeïen</string>
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/values-ar-rSA/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,12 @@
<!-- Features -->
<string name="feat_screen_off_widget_title">القطعة خارج الشاشة</string>
<string name="feat_screen_off_widget_desc">القطعة غير مرئية لإيقاف الشاشة</string>
<string name="screen_off_method_title">Screen Off Method</string>
<string name="screen_off_method_accessibility">Accessibility</string>
<string name="screen_off_method_input">Input</string>
<string name="screen_off_widget_input_permission_id">Screen off widget - Input</string>
<string name="require_double_tap_title">Require double tap</string>
<string name="require_double_tap_desc">To screen off</string>
<string name="feat_statusbar_icons_title">أيقونات شريط الحالة</string>
<string name="feat_statusbar_icons_desc">التحكم في رؤية أيقونات شريط الحالة</string>
<string name="feat_caffeinate_title">الكافيين</string>
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/values-ca-rES/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,12 @@
<!-- Features -->
<string name="feat_screen_off_widget_title">Giny apagat de la pantalla</string>
<string name="feat_screen_off_widget_desc">Giny invisible per apagar la pantalla</string>
<string name="screen_off_method_title">Screen Off Method</string>
<string name="screen_off_method_accessibility">Accessibility</string>
<string name="screen_off_method_input">Input</string>
<string name="screen_off_widget_input_permission_id">Screen off widget - Input</string>
<string name="require_double_tap_title">Require double tap</string>
<string name="require_double_tap_desc">To screen off</string>
<string name="feat_statusbar_icons_title">Icones de la barra d\'estat</string>
<string name="feat_statusbar_icons_desc">Controla la visibilitat de les icones de la barra d\'estat</string>
<string name="feat_caffeinate_title">Cafeïna</string>
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/values-cs-rCZ/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,12 @@
<!-- Features -->
<string name="feat_screen_off_widget_title">Widget pro vypnutí obrazovky</string>
<string name="feat_screen_off_widget_desc">Neviditelný widget pro vypnutí obrazovky</string>
<string name="screen_off_method_title">Screen Off Method</string>
<string name="screen_off_method_accessibility">Accessibility</string>
<string name="screen_off_method_input">Input</string>
<string name="screen_off_widget_input_permission_id">Screen off widget - Input</string>
<string name="require_double_tap_title">Require double tap</string>
<string name="require_double_tap_desc">To screen off</string>
<string name="feat_statusbar_icons_title">Ikony stavového řádku</string>
<string name="feat_statusbar_icons_desc">Ovládejte viditelnost ikon stavového řádku</string>
<string name="feat_caffeinate_title">kofeinát</string>
Expand Down
6 changes: 6 additions & 0 deletions app/src/main/res/values-da-rDK/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,12 @@
<!-- Features -->
<string name="feat_screen_off_widget_title">Skærm off widget</string>
<string name="feat_screen_off_widget_desc">Usynlig widget til at slukke for skærmen</string>
<string name="screen_off_method_title">Screen Off Method</string>
<string name="screen_off_method_accessibility">Accessibility</string>
<string name="screen_off_method_input">Input</string>
<string name="screen_off_widget_input_permission_id">Screen off widget - Input</string>
<string name="require_double_tap_title">Require double tap</string>
<string name="require_double_tap_desc">To screen off</string>
<string name="feat_statusbar_icons_title">Statuslinjeikoner</string>
<string name="feat_statusbar_icons_desc">Styr statuslinjeikoners synlighed</string>
<string name="feat_caffeinate_title">Koffeinat</string>
Expand Down
Loading