Проблема с запуском на более низких версиях Android - PullRequest
0 голосов
/ 12 сентября 2018

У меня в классе следующие развлечения:

@TargetApi(Build.VERSION_CODES.P)
override fun showFingerprintDialog() {
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) displayBiometricPrompt()
    else FingerprintDialog().show(supportFragmentManager, null)
}

@RequiresApi(Build.VERSION_CODES.P)
private fun displayBiometricPrompt() {
    Log.d("some", "displayBiometricPrompt")
    val biometricPrompt = BiometricPrompt.Builder(AppResources.appContext)
            .setTitle("title")
            .setSubtitle("subTitle")
            .setDescription("description")
            .setNegativeButton("Cancel", AppResources.appContext?.mainExecutor,
                    DialogInterface.OnClickListener { dialogInterface, i -> Log.d("some", "biometricPrompt") })
            .build()
    val cancellationSignal = CancellationSignal()
    cancellationSignal.setOnCancelListener {
        Toast.makeText(
                AppResources.appContext, "onCancel", Toast.LENGTH_SHORT).show()
    }
    biometricPrompt.authenticate(cancellationSignal, AppResources.appContext?.mainExecutor, authenticationCallBack)
}

private val authenticationCallBack = object : BiometricPrompt.AuthenticationCallback() {
    override fun onAuthenticationError(errorCode: Int, errString: CharSequence?) {
        super.onAuthenticationError(errorCode, errString)
        Log.d("some", "onAuthenticationError")
    }

    override fun onAuthenticationSucceeded(result: BiometricPrompt.AuthenticationResult?) {
        super.onAuthenticationSucceeded(result)
        Log.d("some", "onAuthenticationSucceeded")
    }

    override fun onAuthenticationHelp(helpCode: Int, helpString: CharSequence?) {
        super.onAuthenticationHelp(helpCode, helpString)
        Log.d("some", "onAuthenticationHelp")
    }

    override fun onAuthenticationFailed() {
        super.onAuthenticationFailed()
        Log.d("some", "onAuthenticationFailed")
    }
}

Попробуйте запустить на версии P все работает правильно, это вызывает удовольствие displayBiometricPrompt() и далее по сценарию, все работает правильно. Но если я пытаюсь запустить на версиях ниже, выдает следующую ошибку, а именно при объявлении переменной authenticationCallBack.

И получите следующую ошибку:

java.lang.NoClassDefFoundError: com.mandarine.android.features.applock.unlock.UnlockAppActivity$authenticationCallBack$1 

at com.mandarine.android.features.applock.unlock.UnlockAppActivity.<init>(UnlockAppActivity.kt:119)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...