mirror of https://github.com/x13a/Wasted.git
add TileService
This commit is contained in:
parent
169acb84dd
commit
1ee550ee50
|
@ -8,7 +8,7 @@ Lock device and wipe data on panic trigger.
|
||||||
|
|
||||||
<img src="https://user-images.githubusercontent.com/53379023/146694310-41316fdb-b7c7-44e7-b18d-a1f4d0a7bec5.png" width="30%" height="30%">
|
<img src="https://user-images.githubusercontent.com/53379023/146694310-41316fdb-b7c7-44e7-b18d-a1f4d0a7bec5.png" width="30%" height="30%">
|
||||||
|
|
||||||
You can use [PanicKit](https://guardianproject.info/code/panickit/) or send broadcast message
|
You can use [PanicKit](https://guardianproject.info/code/panickit/), Tile or send broadcast message
|
||||||
with authentication code. On trigger, using
|
with authentication code. On trigger, using
|
||||||
[Device Administration API](https://developer.android.com/guide/topics/admin/device-admin), it
|
[Device Administration API](https://developer.android.com/guide/topics/admin/device-admin), it
|
||||||
locks device and runs wipe.
|
locks device and runs wipe.
|
||||||
|
|
|
@ -10,8 +10,8 @@ android {
|
||||||
applicationId "me.lucky.wasted"
|
applicationId "me.lucky.wasted"
|
||||||
minSdk 23
|
minSdk 23
|
||||||
targetSdk 31
|
targetSdk 31
|
||||||
versionCode 7
|
versionCode 8
|
||||||
versionName "1.1.0"
|
versionName "1.1.1"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,20 @@
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<service
|
||||||
|
android:name=".QSTileService"
|
||||||
|
android:icon="@android:drawable/ic_lock_lock"
|
||||||
|
android:label="@string/tile_label"
|
||||||
|
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"
|
||||||
|
android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.service.quicksettings.action.QS_TILE" />
|
||||||
|
</intent-filter>
|
||||||
|
<meta-data
|
||||||
|
android:name="android.service.quicksettings.TOGGLEABLE_TILE"
|
||||||
|
android:value="true" />
|
||||||
|
</service>
|
||||||
|
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -7,7 +7,6 @@ import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
@ -19,7 +18,8 @@ open class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
private val prefs by lazy { Preferences(this) }
|
private val prefs by lazy { Preferences(this) }
|
||||||
private val dpm by lazy {
|
private val dpm by lazy {
|
||||||
getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager }
|
getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||||
|
}
|
||||||
private val deviceAdmin by lazy { ComponentName(this, DeviceAdminReceiver::class.java) }
|
private val deviceAdmin by lazy { ComponentName(this, DeviceAdminReceiver::class.java) }
|
||||||
|
|
||||||
private val requestAdminPolicy =
|
private val requestAdminPolicy =
|
||||||
|
|
|
@ -2,13 +2,11 @@ package me.lucky.wasted
|
||||||
|
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
|
|
||||||
import info.guardianproject.panic.PanicResponder
|
import info.guardianproject.panic.PanicResponder
|
||||||
|
|
||||||
class PanicConnectionActivity : MainActivity() {
|
class PanicConnectionActivity : MainActivity() {
|
||||||
|
|
||||||
private val pm by lazy { packageManager }
|
private val pm by lazy { packageManager }
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
|
|
@ -3,7 +3,6 @@ package me.lucky.wasted
|
||||||
import android.app.admin.DevicePolicyManager
|
import android.app.admin.DevicePolicyManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
|
||||||
import info.guardianproject.panic.Panic
|
import info.guardianproject.panic.Panic
|
||||||
|
@ -12,7 +11,8 @@ import info.guardianproject.panic.PanicResponder
|
||||||
class PanicResponderActivity : AppCompatActivity() {
|
class PanicResponderActivity : AppCompatActivity() {
|
||||||
private val prefs by lazy { Preferences(this) }
|
private val prefs by lazy { Preferences(this) }
|
||||||
private val dpm by lazy {
|
private val dpm by lazy {
|
||||||
getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager }
|
getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package me.lucky.wasted
|
package me.lucky.wasted
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
|
||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
import androidx.security.crypto.EncryptedSharedPreferences
|
import androidx.security.crypto.EncryptedSharedPreferences
|
||||||
import androidx.security.crypto.MasterKeys
|
import androidx.security.crypto.MasterKeys
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
package me.lucky.wasted
|
||||||
|
|
||||||
|
import android.app.admin.DevicePolicyManager
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Build
|
||||||
|
import android.service.quicksettings.Tile
|
||||||
|
import android.service.quicksettings.TileService
|
||||||
|
import androidx.annotation.RequiresApi
|
||||||
|
import java.util.*
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger
|
||||||
|
import kotlin.concurrent.timerTask
|
||||||
|
|
||||||
|
@RequiresApi(Build.VERSION_CODES.N)
|
||||||
|
class QSTileService : TileService() {
|
||||||
|
private val prefs by lazy { Preferences(this) }
|
||||||
|
private val dpm by lazy {
|
||||||
|
getSystemService(Context.DEVICE_POLICY_SERVICE) as DevicePolicyManager
|
||||||
|
}
|
||||||
|
private val counter = AtomicInteger(0)
|
||||||
|
private var timer: Timer? = null
|
||||||
|
|
||||||
|
override fun onStartListening() {
|
||||||
|
super.onStartListening()
|
||||||
|
update(if (prefs.isServiceEnabled) Tile.STATE_INACTIVE else Tile.STATE_UNAVAILABLE)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onClick() {
|
||||||
|
super.onClick()
|
||||||
|
if (!prefs.isServiceEnabled) return
|
||||||
|
if (!prefs.doWipe) {
|
||||||
|
dpm.lockNow()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
when (counter.getAndIncrement()) {
|
||||||
|
0 -> {
|
||||||
|
update(Tile.STATE_ACTIVE)
|
||||||
|
timer?.cancel()
|
||||||
|
timer = Timer()
|
||||||
|
timer?.schedule(timerTask {
|
||||||
|
update(Tile.STATE_INACTIVE)
|
||||||
|
counter.set(0)
|
||||||
|
}, 2000)
|
||||||
|
}
|
||||||
|
1 -> {
|
||||||
|
dpm.lockNow()
|
||||||
|
dpm.wipeData(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun update(tileState: Int) {
|
||||||
|
qsTile.apply {
|
||||||
|
state = tileState
|
||||||
|
updateTile()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
<resources>
|
<resources>
|
||||||
<string name="app_name">Wasted</string>
|
<string name="app_name">Wasted</string>
|
||||||
<string name="description">Turn on Wasted to lock device on panic trigger. You can use PanicKit or send broadcast message with this authentication code.</string>
|
<string name="description">Turn on Wasted to lock device on panic trigger. You can use PanicKit, Tile or send broadcast message with this authentication code.</string>
|
||||||
<string name="device_admin_label">Wasted</string>
|
<string name="device_admin_label">Wasted</string>
|
||||||
<string name="device_admin_description">Allow Wasted to lock device and wipe data on panic trigger</string>
|
<string name="device_admin_description">Allow Wasted to lock device and wipe data on panic trigger</string>
|
||||||
<string name="service_unavailable_toast">Admin service unavailable</string>
|
<string name="service_unavailable_toast">Admin service unavailable</string>
|
||||||
|
@ -10,4 +10,5 @@
|
||||||
<string name="panic_app_unknown_app">an unknown app</string>
|
<string name="panic_app_unknown_app">an unknown app</string>
|
||||||
<string name="allow">Allow</string>
|
<string name="allow">Allow</string>
|
||||||
<string name="cancel">Cancel</string>
|
<string name="cancel">Cancel</string>
|
||||||
|
<string name="tile_label">Unlock device</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
add TileService
|
|
@ -1,4 +1,4 @@
|
||||||
Lock device and wipe data on panic trigger.
|
Lock device and wipe data on panic trigger.
|
||||||
|
|
||||||
You can use PanicKit or send broadcast message with authentication code.
|
You can use PanicKit, Tile or send broadcast message with authentication code.
|
||||||
On trigger, using Device Administration API, it locks device and runs wipe.
|
On trigger, using Device Administration API, it locks device and runs wipe.
|
||||||
|
|
Loading…
Reference in New Issue