
部分源码如下
package top.yunp.lockscreen
import android.app.admin.DevicePolicyManager
import android.content.ComponentName
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.enableEdgeToEdge
import androidx.activity.result.contract.ActivityResultContracts
class MainActivity : ComponentActivity() {
var devicePolicyManager: DevicePolicyManager? = null
var deviceAdminComponent: ComponentName? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
devicePolicyManager = getSystemService(DEVICE_POLICY_SERVICE) as DevicePolicyManager
deviceAdminComponent = ComponentName(this, LockScreenDeviceAdminReceiver::class.java)
devicePolicyManager?.also { dpm ->
if (dpm.isAdminActive(deviceAdminComponent!!)) {
dpm.lockNow()
finish()
} else {
val intent = Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN)
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, deviceAdminComponent)
intent.putExtra(
DevicePolicyManager.EXTRA_ADD_EXPLANATION,
"需要设备管理员权限以实现锁屏功能"
)
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == RESULT_OK) {
dpm.lockNow()
} else {
Toast.makeText(this, "权限被拒绝,无法锁屏", Toast.LENGTH_LONG).show();
}
finish()
}.launch(intent)
}
}
}
}