在锁屏的时候启动一个1个像素的Activity,当用户解锁以后将这个Activity结束掉。

定义一个1像素的Activity,在该Activity中动态注册自定义的广播。

class OnePixelActivity : AppCompatActivity() {

private lateinit var br: BroadcastReceiver

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//设定一像素的activity
val window = window
window.setGravity(Gravity.LEFT or Gravity.TOP)
val params = window.attributes
params.x = 0
params.y = 0
params.height = 1
params.width = 1
window.attributes = params
//在一像素activity里注册广播接受者 接受到广播结束掉一像素
br = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
finish()
}
}
registerReceiver(br, IntentFilter("finish activity"))
checkScreenOn()
}

override fun onResume() {
super.onResume()
checkScreenOn()
}

override fun onDestroy() {
try {
//销毁的时候解锁广播
unregisterReceiver(br)
} catch (e: IllegalArgumentException) {
}
super.onDestroy()
}

/**
* 检查屏幕是否点亮
*/
private fun checkScreenOn() {
val pm = this@OnePixelActivity.getSystemService(Context.POWER_SERVICE) as PowerManager
val isScreenOn = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
pm.isInteractive
} else {
pm.isScreenOn
}
if (isScreenOn) {
finish()
}
}
}

相关文章:

  • 2022-12-23
  • 2022-02-26
  • 2021-12-25
  • 2022-12-23
  • 2022-12-23
  • 2021-10-09
  • 2021-12-28
  • 2021-12-26
猜你喜欢
  • 2022-12-23
  • 2021-11-18
  • 2022-02-15
  • 2021-12-07
  • 2021-12-13
  • 2022-01-31
  • 2021-09-09
相关资源
相似解决方案