diff --git a/app/src/main/java/me/lucky/wasted/CodeReceiver.kt b/app/src/main/java/me/lucky/wasted/CodeReceiver.kt
index df5d267..3347d7e 100644
--- a/app/src/main/java/me/lucky/wasted/CodeReceiver.kt
+++ b/app/src/main/java/me/lucky/wasted/CodeReceiver.kt
@@ -9,14 +9,12 @@ class CodeReceiver : BroadcastReceiver() {
const val KEY = "code"
const val ACTION = "me.lucky.wasted.action.TRIGGER"
- fun panic(context: Context?, intent: Intent?) {
- if (context == null || intent == null) return
+ fun panic(context: Context, intent: Intent?) {
+ if (intent?.action != ACTION) return
val prefs = Preferences(context)
+ if (!prefs.isServiceEnabled) return
val code = prefs.code
- if (!prefs.isServiceEnabled ||
- code == "" ||
- intent.action != ACTION ||
- intent.getStringExtra(KEY) != code) return
+ if (code == "" || intent.getStringExtra(KEY) != code) return
val admin = DeviceAdminManager(context)
try {
admin.lockNow()
@@ -26,6 +24,8 @@ class CodeReceiver : BroadcastReceiver() {
}
override fun onReceive(context: Context?, intent: Intent?) {
+ if (context == null ||
+ Preferences(context).triggers.and(Trigger.BROADCAST.value) == 0) return
panic(context, intent)
}
}
diff --git a/app/src/main/java/me/lucky/wasted/MainActivity.kt b/app/src/main/java/me/lucky/wasted/MainActivity.kt
index 40c4024..a2b071f 100644
--- a/app/src/main/java/me/lucky/wasted/MainActivity.kt
+++ b/app/src/main/java/me/lucky/wasted/MainActivity.kt
@@ -92,7 +92,7 @@ open class MainActivity : AppCompatActivity() {
private fun setup() {
binding.apply {
code.setOnClickListener {
- showLaunchersSettings()
+ showTriggersSettings()
}
code.setOnLongClickListener {
prefs.code = makeCode()
@@ -150,28 +150,28 @@ open class MainActivity : AppCompatActivity() {
.show()
}
- private fun showLaunchersSettings() {
- var launchers = prefs.launchers
- val values = Launcher.values().toMutableList()
- val strings = resources.getStringArray(R.array.launchers).toMutableList()
+ private fun showTriggersSettings() {
+ var triggers = prefs.triggers
+ val values = Trigger.values().toMutableList()
+ val strings = resources.getStringArray(R.array.triggers).toMutableList()
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
- strings.removeAt(values.indexOf(Launcher.TILE))
- values.remove(Launcher.TILE)
+ strings.removeAt(values.indexOf(Trigger.TILE))
+ values.remove(Trigger.TILE)
}
MaterialAlertDialogBuilder(this)
.setMultiChoiceItems(
strings.toTypedArray(),
- values.map { launchers.and(it.value) != 0 }.toBooleanArray(),
+ values.map { triggers.and(it.value) != 0 }.toBooleanArray(),
) { _, index, isChecked ->
val flag = values[index]
- launchers = when (isChecked) {
- true -> launchers.or(flag.value)
- false -> launchers.and(flag.value.inv())
+ triggers = when (isChecked) {
+ true -> triggers.or(flag.value)
+ false -> triggers.and(flag.value.inv())
}
}
.setPositiveButton(android.R.string.ok) { _, _ ->
- prefs.launchers = launchers
- setLaunchersState(prefs.isServiceEnabled)
+ prefs.triggers = triggers
+ setTriggersState(prefs.isServiceEnabled)
}
.show()
}
@@ -197,7 +197,7 @@ open class MainActivity : AppCompatActivity() {
private fun updateCodeColorState() {
binding.code.setBackgroundColor(getColor(
- if (prefs.launchers != 0) R.color.code_receiver_on else R.color.code_receiver_off
+ if (prefs.triggers != 0) R.color.code_on else R.color.code_off
))
}
@@ -208,17 +208,17 @@ open class MainActivity : AppCompatActivity() {
return
}
prefs.isServiceEnabled = true
- setLaunchersState(true)
+ setTriggersState(true)
}
- private fun setLaunchersState(value: Boolean) {
+ private fun setTriggersState(value: Boolean) {
if (value) {
- val launchers = prefs.launchers
- setPanicKitState(launchers.and(Launcher.PANIC_KIT.value) != 0)
- setQSTileState(launchers.and(Launcher.TILE.value) != 0)
- shortcut.setState(launchers.and(Launcher.SHORTCUT.value) != 0)
- setCodeReceiverState(launchers.and(Launcher.BROADCAST.value) != 0)
- setNotificationListenerState(launchers.and(Launcher.NOTIFICATION.value) != 0)
+ val triggers = prefs.triggers
+ setPanicKitState(triggers.and(Trigger.PANIC_KIT.value) != 0)
+ setQSTileState(triggers.and(Trigger.TILE.value) != 0)
+ shortcut.setState(triggers.and(Trigger.SHORTCUT.value) != 0)
+ setCodeReceiverState(triggers.and(Trigger.BROADCAST.value) != 0)
+ setNotificationListenerState(triggers.and(Trigger.NOTIFICATION.value) != 0)
} else {
setPanicKitState(false)
setQSTileState(false)
@@ -240,7 +240,7 @@ open class MainActivity : AppCompatActivity() {
private fun setOff() {
prefs.isServiceEnabled = false
setWipeOnInactivityComponentsState(false)
- setLaunchersState(false)
+ setTriggersState(false)
admin.remove()
}
diff --git a/app/src/main/java/me/lucky/wasted/NotificationListenerService.kt b/app/src/main/java/me/lucky/wasted/NotificationListenerService.kt
index d026f7a..4c0c82f 100644
--- a/app/src/main/java/me/lucky/wasted/NotificationListenerService.kt
+++ b/app/src/main/java/me/lucky/wasted/NotificationListenerService.kt
@@ -21,7 +21,9 @@ class NotificationListenerService : NotificationListenerService() {
override fun onNotificationPosted(sbn: StatusBarNotification?) {
super.onNotificationPosted(sbn)
- if (sbn == null || !prefs.isServiceEnabled) return
+ if (sbn == null ||
+ !prefs.isServiceEnabled ||
+ prefs.triggers.and(Trigger.NOTIFICATION.value) == 0) return
val code = prefs.code
if (code == "" ||
sbn.notification.extras[Notification.EXTRA_TEXT]?.toString() != code) return
diff --git a/app/src/main/java/me/lucky/wasted/PanicResponderActivity.kt b/app/src/main/java/me/lucky/wasted/PanicResponderActivity.kt
index 830ee62..b10b2d2 100644
--- a/app/src/main/java/me/lucky/wasted/PanicResponderActivity.kt
+++ b/app/src/main/java/me/lucky/wasted/PanicResponderActivity.kt
@@ -12,7 +12,10 @@ class PanicResponderActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- if (!Panic.isTriggerIntent(intent) || !prefs.isServiceEnabled) {
+ if (!Panic.isTriggerIntent(intent) ||
+ !prefs.isServiceEnabled ||
+ prefs.triggers.and(Trigger.PANIC_KIT.value) == 0)
+ {
finishAndRemoveTask()
return
}
diff --git a/app/src/main/java/me/lucky/wasted/Preferences.kt b/app/src/main/java/me/lucky/wasted/Preferences.kt
index 8779ff3..fcd12e9 100644
--- a/app/src/main/java/me/lucky/wasted/Preferences.kt
+++ b/app/src/main/java/me/lucky/wasted/Preferences.kt
@@ -16,7 +16,7 @@ class Preferences(ctx: Context) {
private const val MAX_FAILED_PASSWORD_ATTEMPTS = "max_failed_password_attempts"
private const val WIPE_ON_INACTIVITY = "wipe_on_inactivity"
- private const val LAUNCHERS = "launchers"
+ private const val TRIGGERS = "triggers"
private const val WIPE_ON_INACTIVITY_DAYS = "wipe_on_inactivity_days"
private const val FILE_NAME = "sec_shared_prefs"
@@ -25,6 +25,7 @@ class Preferences(ctx: Context) {
private const val CODE_ENABLED = "code_enabled"
private const val WIPE_ON_INACTIVE = "wipe_on_inactive"
private const val WIPE_ON_INACTIVE_DAYS = "wipe_on_inactive_days"
+ private const val LAUNCHERS = "launchers"
}
private val mk = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC)
@@ -40,12 +41,15 @@ class Preferences(ctx: Context) {
get() = prefs.getBoolean(SERVICE_ENABLED, false)
set(value) = prefs.edit { putBoolean(SERVICE_ENABLED, value) }
- var launchers: Int
+ var triggers: Int
get() = prefs.getInt(
- LAUNCHERS,
- if (prefs.getBoolean(CODE_ENABLED, false)) Launcher.BROADCAST.value else 0,
+ TRIGGERS,
+ prefs.getInt(
+ LAUNCHERS,
+ if (prefs.getBoolean(CODE_ENABLED, false)) Trigger.BROADCAST.value else 0
+ ),
)
- set(value) = prefs.edit { putInt(LAUNCHERS, value) }
+ set(value) = prefs.edit { putInt(TRIGGERS, value) }
var code: String
get() = prefs.getString(CODE, "") ?: ""
@@ -78,7 +82,7 @@ class Preferences(ctx: Context) {
set(value) = prefs.edit { putInt(WIPE_ON_INACTIVITY_DAYS, value) }
}
-enum class Launcher(val value: Int) {
+enum class Trigger(val value: Int) {
PANIC_KIT(1),
TILE(1 shl 1),
SHORTCUT(1 shl 2),
diff --git a/app/src/main/java/me/lucky/wasted/ShortcutActivity.kt b/app/src/main/java/me/lucky/wasted/ShortcutActivity.kt
index 1f663e8..b179eec 100644
--- a/app/src/main/java/me/lucky/wasted/ShortcutActivity.kt
+++ b/app/src/main/java/me/lucky/wasted/ShortcutActivity.kt
@@ -6,6 +6,10 @@ import androidx.appcompat.app.AppCompatActivity
class ShortcutActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
+ if (Preferences(this).triggers.and(Trigger.SHORTCUT.value) == 0) {
+ finishAndRemoveTask()
+ return
+ }
CodeReceiver.panic(this, intent)
finishAndRemoveTask()
}
diff --git a/app/src/main/java/me/lucky/wasted/TileService.kt b/app/src/main/java/me/lucky/wasted/TileService.kt
index 65cc9a7..9254838 100644
--- a/app/src/main/java/me/lucky/wasted/TileService.kt
+++ b/app/src/main/java/me/lucky/wasted/TileService.kt
@@ -39,7 +39,7 @@ class TileService : TileService() {
override fun onClick() {
super.onClick()
- if (!prefs.isServiceEnabled) return
+ if (!prefs.isServiceEnabled || prefs.triggers.and(Trigger.TILE.value) == 0) return
if (!prefs.isWipeData) {
try {
admin.lockNow()
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index d624f18..6f0c2f1 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -35,7 +35,7 @@
android:id="@+id/code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@color/code_receiver_off"
+ android:background="@color/code_off"
android:padding="16dp"
android:textAlignment="center"
android:textColor="@color/black"
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 794df32..d032468 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -26,11 +26,11 @@
Активировать тревогу\?
Это заблокирует устройство и опционально сотрёт его данные.
Да
- Тревожная кнопка
- Плитка
- Ярлык
- Широковещательное сообщение
- Уведомление
+ Тревожная кнопка
+ Плитка
+ Ярлык
+ Широковещательное сообщение
+ Уведомление
Вайпер
Сканирует уведомления на наличие кода аутентификации
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 8705aad..137eb52 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -6,6 +6,6 @@
#FF000000
#FFFFFFFF
- #FFD600
- #E13741
+ #FFD600
+ #E13741
\ No newline at end of file
diff --git a/app/src/main/res/values/string-arrays.xml b/app/src/main/res/values/string-arrays.xml
index fd44d2f..922cdbd 100644
--- a/app/src/main/res/values/string-arrays.xml
+++ b/app/src/main/res/values/string-arrays.xml
@@ -1,10 +1,10 @@
-
- - @string/launchers_array_panic_kit
- - @string/launchers_array_tile
- - @string/launchers_array_shortcut
- - @string/launchers_array_broadcast
- - @string/launchers_array_notification
+
+ - @string/triggers_array_panic_kit
+ - @string/triggers_array_tile
+ - @string/triggers_array_shortcut
+ - @string/triggers_array_broadcast
+ - @string/triggers_array_notification
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b70daec..7c96596 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -26,11 +26,11 @@
Activate panic\?
This will lock a device and optionally wipe its data.
Yes
- PanicKit
- Tile
- Shortcut
- Broadcast
- Notification
+ PanicKit
+ Tile
+ Shortcut
+ Broadcast
+ Notification
Viper
Scan notifications for authentication code