Android KeyguardManager不返回任何结果

时间:2018-08-28 11:22:07

标签: android android-activity kotlin

我正在尝试在我的应用中实现“ 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)上对此进行测试。

1 个答案:

答案 0 :(得分:0)

经过2个小时的调试,我找到了答案!发生这种情况是因为我将RESULT_OK常量用作private。一经公开,我的KeyManager就可以正常工作!我假设系统将其视为0,因此它没有将任何内容返回给活动:)