我正在尝试在我的应用中实现“ KeyManager”。当需要授权操作时,系统会提示用户解锁方式。我在活动中观察到此结果,并根据结果继续采取进一步的措施。以下是我正在使用的代码,
private const val RESULT_OK = 99
val km = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
val i = km.createConfirmDeviceCredentialIntent("Name", "Something")
i?.let { ind ->
startActivityForResult(ind, RESULT_OK)
// startActivityForResult(Intent(this@LoginActivity, AnotherActivity::class.java), RESULT_OK) //This works
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
Log.i("TAG======", requestCode.toString() + "--" + resultCode.toString())
}
每当我使用startActivityForResult(ind, RESULT_OK)
时,onActivityResult不会被调用,但是当我使用任何其他活动,例如startActivityForResult(Intent(this@LoginActivity, AnotherActivity::class.java), RESULT_OK)
时,活动完成后就会调用onActivityResult。我想念什么吗?我正在运行Android 8.1的物理设备(OnePlus 5t)上对此进行测试。
答案 0 :(得分:0)
经过2个小时的调试,我找到了答案!发生这种情况是因为我将RESULT_OK
常量用作private
。一经公开,我的KeyManager
就可以正常工作!我假设系统将其视为0
,因此它没有将任何内容返回给活动:)