Android - не предоставляется USE_BIOMETRIC - PullRequest
0 голосов
/ 04 июня 2019

Я проверяю все разрешения из Манифеста с кодом ниже.Теперь я добавил разрешение USE_BIOMETRIC, потому что я хочу использовать отпечаток пальца, но это разрешение не предоставлено, и я не знаю почему.

Я знаю, что USE_BIOMETRIC - это нормальное разрешение, поэтому его не следует спрашивать, и оно должно бытьпредоставляется, когда он находится в Манифесте, но это не так.

Проверка других разрешений работает, и все предоставляются или запрашиваются, только это не так.

Я тестирую приложение на 2телефоны, эмулированные пикселем Google с Android 8.0 и API 26 и физическим Xiaomi Redmi 5 с Android 8.1 и API 27.

Оба телефона используют отпечатки пальцев для разблокировки экрана.

Разрешения в манифесте:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" />

Код, который загружает разрешения из манифеста и проверяет, предоставлено или нет:

fun checkAndRequestPermissions(): Boolean{
    var listPermissionsNeeded = ArrayList<String>()
    val permissions = retrievePermissions(activity.baseContext)
    permissions.forEach {
        if(ContextCompat.checkSelfPermission(activity.baseContext, it) != PackageManager.PERMISSION_GRANTED){
            listPermissionsNeeded.add(it)
            Log.d("Missing permission", it)
        }
    }
    if (!listPermissionsNeeded.isEmpty()) {
        val array = arrayOfNulls<String>(listPermissionsNeeded.size)
        listPermissionsNeeded.toArray(array)
        ActivityCompat.requestPermissions(activity, array, ConstantsStorage.ACTIVITY_REQUEST_PERMISSIONS_CODE)
        return false
    }
    return true
}

companion object {

    /**
     * Retrieves permissions listed in the manifest file
     * @param context Context
     * @return Returns String array of permissions
     */
    fun retrievePermissions(context: Context): Array<String> {
        try {
            return context
                    .packageManager
                    .getPackageInfo(context.packageName, PackageManager.GET_PERMISSIONS)
                    .requestedPermissions
        } catch (e: PackageManager.NameNotFoundException) {
            throw RuntimeException("This should have never happened.", e)
        }

    }
}

Спасибо за помощь

...