Files
OwnDroid/app/src/main/java/com/bintianqi/owndroid/AutomationReceiver.kt
2024-07-02 14:31:01 +08:00

45 lines
1.6 KiB
Kotlin

package com.bintianqi.owndroid
import android.app.admin.DevicePolicyManager
import android.content.BroadcastReceiver
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.util.Log
import androidx.activity.ComponentActivity
class AutomationReceiver: BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
handleTask(context, intent)
}
}
fun handleTask(context: Context, intent: Intent): String {
val sharedPrefs = context.getSharedPreferences("data", Context.MODE_PRIVATE)
val key = sharedPrefs.getString("automation_key", "") ?: ""
if(key.length < 6) {
return "Key length must longer than 6"
}
if(key != intent.getStringExtra("key")) {
return "Wrong key"
}
val operation = intent.getStringExtra("operation")
val dpm = context.getSystemService(ComponentActivity.DEVICE_POLICY_SERVICE) as DevicePolicyManager
val receiver = ComponentName(context,Receiver::class.java)
val app = intent.getStringExtra("app")
try {
when(operation) {
"suspend" -> dpm.setPackagesSuspended(receiver, arrayOf(app), true)
"unsuspend" -> dpm.setPackagesSuspended(receiver, arrayOf(app), false)
"hide" -> dpm.setApplicationHidden(receiver, app, true)
"unhide" -> dpm.setApplicationHidden(receiver, app, false)
"lock" -> dpm.lockNow()
"reboot" -> dpm.reboot(receiver)
else -> return "Operation not defined"
}
} catch(e: Exception) {
return e.message ?: "Failed to get error message"
}
return "No error, or error is unhandled"
}