From 5f772a6968cccd372236c59e64866ee2b706b693 Mon Sep 17 00:00:00 2001 From: lucky <> Date: Sat, 18 Dec 2021 02:26:43 +0300 Subject: [PATCH] make wipe action optional --- README.md | 6 +++--- app/src/main/AndroidManifest.xml | 4 ++-- .../wasted/{ControlReceiver.kt => CodeReceiver.kt} | 14 ++++++++------ app/src/main/java/me/lucky/wasted/MainActivity.kt | 6 +++++- app/src/main/java/me/lucky/wasted/Preferences.kt | 5 +++++ app/src/main/res/layout/activity_main.xml | 14 ++++++++++++++ app/src/main/res/values/strings.xml | 5 +++-- build.gradle | 4 ++-- fastlane/metadata/android/en-US/changelogs/7.txt | 0 .../metadata/android/en-US/full_description.txt | 4 +++- .../metadata/android/en-US/short_description.txt | 2 +- 11 files changed, 46 insertions(+), 18 deletions(-) rename app/src/main/java/me/lucky/wasted/{ControlReceiver.kt => CodeReceiver.kt} (59%) create mode 100644 fastlane/metadata/android/en-US/changelogs/7.txt 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. [Get it on F-Droid - + 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