Android-未授予USE_BIOMETRIC

时间:2019-06-04 09:53:21

标签: android kotlin permissions manifest

我正在检查代码清单中来自清单的所有权限。现在,我添加了USE_BIOMETRIC权限,因为我想使用指纹,但是未授予此权限,我也不知道为什么。

我知道USE_BIOMETRIC是正常权限,因此在清单中时不应该询问它,应该授予它,但不是。

正在检查其他权限是否正常,是否已授予或要求所有权限,只有这一权限无效。

我正在2部手机上测试应用程序,使用Android 8.0和API 26模拟Google像素,并使用Android 8.1和API 27模拟物理小米Redmi 5。

两款手机都使用指纹来解锁屏幕。

清单中的权限:

<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)
        }

    }
}

谢谢您的帮助

0 个答案:

没有答案