11package me.lucky.wasted
22
3+ import android.app.KeyguardManager
34import android.content.ComponentName
45import android.content.Context
56import android.content.Intent
67import android.content.pm.PackageManager
78import android.os.Build
89import androidx.core.content.ContextCompat
910
11+ import me.lucky.wasted.admin.DeviceAdminManager
1012import me.lucky.wasted.trigger.notification.NotificationListenerService
1113import me.lucky.wasted.trigger.panic.PanicConnectionActivity
1214import me.lucky.wasted.trigger.panic.PanicResponderActivity
@@ -26,10 +28,10 @@ class Utils(private val ctx: Context) {
2628 }
2729 }
2830
29- private val shortcut by lazy { ShortcutManager (ctx) }
31+ private val prefs by lazy { Preferences .new (ctx) }
3032
3133 fun setEnabled (enabled : Boolean ) {
32- val triggers = Preferences (ctx) .triggers
34+ val triggers = prefs .triggers
3335 setPanicKitEnabled(enabled && triggers.and (Trigger .PANIC_KIT .value) != 0 )
3436 setTileEnabled(enabled && triggers.and (Trigger .TILE .value) != 0 )
3537 setShortcutEnabled(enabled && triggers.and (Trigger .SHORTCUT .value) != 0 )
@@ -50,6 +52,7 @@ class Utils(private val ctx: Context) {
5052 }
5153
5254 fun setShortcutEnabled (enabled : Boolean ) {
55+ val shortcut = ShortcutManager (ctx)
5356 if (! enabled) shortcut.remove()
5457 setComponentEnabled(ShortcutActivity ::class .java, enabled)
5558 if (enabled) shortcut.push()
@@ -63,7 +66,6 @@ class Utils(private val ctx: Context) {
6366
6467 fun updateApplicationEnabled () {
6568 val prefix = " ${ctx.packageName} .trigger.application"
66- val prefs = Preferences (ctx)
6769 val options = prefs.triggerApplicationOptions
6870 val enabled = prefs.isEnabled && prefs.triggers.and (Trigger .APPLICATION .value) != 0
6971 setComponentEnabled(
@@ -85,7 +87,6 @@ class Utils(private val ctx: Context) {
8587 }
8688
8789 fun updateForegroundRequiredEnabled () {
88- val prefs = Preferences (ctx)
8990 val enabled = prefs.isEnabled
9091 val triggers = prefs.triggers
9192 val isUSB = triggers.and (Trigger .USB .value) != 0
@@ -114,4 +115,36 @@ class Utils(private val ctx: Context) {
114115 PackageManager .COMPONENT_ENABLED_STATE_DISABLED ,
115116 PackageManager .DONT_KILL_APP ,
116117 )
118+
119+ fun fire (trigger : Trigger , safe : Boolean = true) {
120+ if (! prefs.isEnabled || prefs.triggers.and (trigger.value) == 0 ) return
121+ val admin = DeviceAdminManager (ctx)
122+ try {
123+ admin.lockNow()
124+ if (prefs.isWipeData && safe) admin.wipeData()
125+ } catch (exc: SecurityException ) {}
126+ if (prefs.isRecastEnabled && safe) recast()
127+ }
128+
129+ fun isDeviceLocked () = ctx.getSystemService(KeyguardManager ::class .java).isDeviceLocked
130+
131+ private fun recast () {
132+ val action = prefs.recastAction
133+ if (action.isEmpty()) return
134+ ctx.sendBroadcast(Intent (action).apply {
135+ val cls = prefs.recastReceiver.split(' /' )
136+ val packageName = cls.firstOrNull() ? : " "
137+ if (packageName.isNotEmpty()) {
138+ setPackage(packageName)
139+ if (cls.size == 2 )
140+ setClassName(
141+ packageName,
142+ " $packageName .${cls[1 ].trimStart(' .' )} " ,
143+ )
144+ }
145+ addFlags(Intent .FLAG_INCLUDE_STOPPED_PACKAGES )
146+ val extraKey = prefs.recastExtraKey
147+ if (extraKey.isNotEmpty()) putExtra(extraKey, prefs.recastExtraValue)
148+ })
149+ }
117150}
0 commit comments