Android KeyguardManager.IsKeyguardSecurity导致StrictMode策略冲突
我想检查设备屏幕锁是否启用,我正在使用Android SDK提供的标准API,如下所示。但是我收到了Android KeyguardManager.IsKeyguardSecurity导致StrictMode策略冲突,android,kotlin,android-strictmode,Android,Kotlin,Android Strictmode,我想检查设备屏幕锁是否启用,我正在使用Android SDK提供的标准API,如下所示。但是我收到了 D/StrictMode: StrictMode policy violation; ~duration=127 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=4259847 violation=2 at android.os.StrictMode$AndroidBlockGuardPolicy.onR
D/StrictMode: StrictMode policy violation; ~duration=127 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=4259847 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1449)
这是我试过的代码
val km = requireContext().getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager?
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//Returns whether the device is secured with a PIN, pattern or password.
km?.isDeviceSecure ?: false
} else {
//Return whether the keyguard is secured by a PIN, pattern or password or a SIM card is currently locked.
km?.isKeyguardSecure ?: false
}
我在我的应用程序类上设置了如下所示的严格模式
private fun enableStrictMode() {
StrictMode.setThreadPolicy(
Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build()
)
}
由于这是Android SDK提供的标准API,为什么会发生这种情况?无论如何,这只是Strictmode的情况,如果禁用strict模式,LogCat上将不会出现任何警告
我做错什么了吗?“为什么会这样?”——谷歌很少用
StrictMode
测试自己的代码,这是很不幸的。也就是说,您可以将键盘护卫的检查更多地添加到一个后台线程中。@commonware这是不幸的。我把代码移到了一个背景线程中,看起来还不错。我试图通过谷歌实现新的生物识别AndroidX库,我发现API中也存在严格的模式冲突。非常感谢您的快速回复。“为什么会发生这种情况?”——谷歌很少使用StrictMode
测试自己的代码,这是很不幸的。也就是说,您可以将键盘护卫的检查更多地添加到一个后台线程中。@commonware这是不幸的。我把代码移到了一个背景线程中,看起来还不错。我试图通过谷歌实现新的生物识别AndroidX库,我发现API中也存在严格的模式冲突。非常感谢您的快速回复。