diff --git a/README.md b/README.md
index 3847ae5..c6bb400 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Wasted
-Wipe data on panic trigger.
+Lock device and wipe data on panic trigger.
[
-
+
diff --git a/app/src/main/java/me/lucky/wasted/ControlReceiver.kt b/app/src/main/java/me/lucky/wasted/CodeReceiver.kt
similarity index 59%
rename from app/src/main/java/me/lucky/wasted/ControlReceiver.kt
rename to app/src/main/java/me/lucky/wasted/CodeReceiver.kt
index 194b314..c676086 100644
--- a/app/src/main/java/me/lucky/wasted/ControlReceiver.kt
+++ b/app/src/main/java/me/lucky/wasted/CodeReceiver.kt
@@ -5,20 +5,22 @@ import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
-class ControlReceiver : BroadcastReceiver() {
+class CodeReceiver : BroadcastReceiver() {
companion object {
- private const val ESCAPE = "me.lucky.wasted.action.ESCAPE"
+ private const val TRIGGER = "me.lucky.wasted.action.TRIGGER"
}
override fun onReceive(context: Context, intent: Intent) {
val prefs by lazy { Preferences(context) }
- if (intent.action != ESCAPE ||
- !prefs.isServiceEnabled ||
- intent.getStringExtra("code") != prefs.code) return
+ val code = prefs.code
+ if (!prefs.isServiceEnabled ||
+ code == "" ||
+ intent.action != TRIGGER ||
+ intent.getStringExtra("code") != code) return
val dpm = context.getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
try {
dpm.lockNow()
- dpm.wipeData(0)
+ if (prefs.doWipe) dpm.wipeData(0)
} catch (exc: SecurityException) {}
}
}
diff --git a/app/src/main/java/me/lucky/wasted/MainActivity.kt b/app/src/main/java/me/lucky/wasted/MainActivity.kt
index e84c41c..bfc3f59 100644
--- a/app/src/main/java/me/lucky/wasted/MainActivity.kt
+++ b/app/src/main/java/me/lucky/wasted/MainActivity.kt
@@ -57,6 +57,7 @@ class MainActivity : AppCompatActivity() {
if (prefs.code == "") prefs.code = makeCode()
binding.apply {
code.text = prefs.code
+ wipeDataCheckBox.isChecked = prefs.doWipe
toggle.isChecked = prefs.isServiceEnabled
}
}
@@ -68,6 +69,9 @@ class MainActivity : AppCompatActivity() {
code.text = prefs.code
true
}
+ wipeDataCheckBox.setOnCheckedChangeListener { _, isChecked ->
+ prefs.doWipe = isChecked
+ }
toggle.setOnCheckedChangeListener { _, isChecked ->
when (isChecked) {
true -> if (!isAdminActive()) requestAdmin() else setOn()
@@ -104,7 +108,7 @@ class MainActivity : AppCompatActivity() {
private fun setControlReceiverState(ctx: Context, value: Boolean) {
ctx.packageManager.setComponentEnabledSetting(
- ComponentName(ctx, ControlReceiver::class.java),
+ ComponentName(ctx, CodeReceiver::class.java),
if (value) PackageManager.COMPONENT_ENABLED_STATE_ENABLED else
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP,
diff --git a/app/src/main/java/me/lucky/wasted/Preferences.kt b/app/src/main/java/me/lucky/wasted/Preferences.kt
index 7a792c2..90891d6 100644
--- a/app/src/main/java/me/lucky/wasted/Preferences.kt
+++ b/app/src/main/java/me/lucky/wasted/Preferences.kt
@@ -10,6 +10,7 @@ class Preferences(ctx: Context) {
companion object {
private const val SERVICE_ENABLED = "service_enabled"
private const val CODE = "code"
+ private const val DO_WIPE = "do_wipe"
}
private val mk = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC)
@@ -28,4 +29,8 @@ class Preferences(ctx: Context) {
var code: String?
get() = prefs.getString(CODE, "")
set(value) = prefs.edit { putString(CODE, value) }
+
+ var doWipe: Boolean
+ get() = prefs.getBoolean(DO_WIPE, false)
+ set(value) = prefs.edit { putBoolean(DO_WIPE, value) }
}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index ba9df39..ccafcf0 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -35,8 +35,22 @@
android:id="@+id/toggle"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:paddingVertical="12dp"
+ android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
+
+
\ 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 d00b691..60f7e2e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,7 +1,8 @@
Wasted
- Turn on Wasted to wipe data on panic trigger. The app will listen for broadcast message with authentication code.
+ Turn on Wasted to lock device on panic trigger. The app will listen for broadcast message with this authentication code.
Wasted
- Allow Wasted to wipe data on panic trigger
+ Allow Wasted to lock device and wipe data on panic trigger
Admin service unavailable
+ Wipe data
diff --git a/build.gradle b/build.gradle
index 8c50564..c15619e 100644
--- a/build.gradle
+++ b/build.gradle
@@ -5,8 +5,8 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath "com.android.tools.build:gradle:7.0.3"
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.0"
+ classpath 'com.android.tools.build:gradle:7.0.4'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
diff --git a/fastlane/metadata/android/en-US/changelogs/7.txt b/fastlane/metadata/android/en-US/changelogs/7.txt
new file mode 100644
index 0000000..e69de29
diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt
index 65292ea..e4d6f52 100644
--- a/fastlane/metadata/android/en-US/full_description.txt
+++ b/fastlane/metadata/android/en-US/full_description.txt
@@ -1,2 +1,4 @@
-Wipe data on panic trigger.
+Lock device and wipe data on panic trigger.
+
The app will listen for broadcast message with authentication code.
+On receive, using Device Administration API, it locks device and runs wipe.
diff --git a/fastlane/metadata/android/en-US/short_description.txt b/fastlane/metadata/android/en-US/short_description.txt
index e94fd0a..a73c1b5 100644
--- a/fastlane/metadata/android/en-US/short_description.txt
+++ b/fastlane/metadata/android/en-US/short_description.txt
@@ -1 +1 @@
-Wipe data on panic trigger
+Lock device and wipe data on panic trigger