Android nougat USE_FINGERPRINT permissions



我正在尝试实现指纹,但不确定是否是问题,但是在Android Nougat上,从未要求使用use_fingerprint的权限。因此,我从来没有得到对话框弹出窗口。我有Access_Fine_Location的实现,并且它有效(该应用要求允许或拒绝)。

在我的清单中:

<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-feature
    android:name="android.hardware.fingerprint"
    android:required="false" />

在片段中

if (ActivityCompat.checkSelfPermission(getActivity(),Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
        Log.v(TAG, "NO permissions USE_FINGERPRINT");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            Log.v(TAG, "No requestPermissions");
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.USE_FINGERPRINT}, FingerprintHandler.FINGERPRINT_PERMISSION);
        }
        return;
    }

这是正常的。指纹许可没有标记为危险,因此您不必要求访问它。如果您在清单中声明许可,则会自动授予它。

这是因为您无法直接访问传感器,并且所有调用的调用都是有限的指纹指纹的槽。

编辑2019年3月:使用use_fingerprint被弃用以支持use_biometric,但仍然可以使用。use_biometric也可以通过在清单中声明。

它不会因为保护水平(正常而不是危险)而要求您授予许可。因此,仅通过要求用户知识而自动授予访问权限。

遵循以下步骤:

在上述许可中添加此清单:

 <uses-feature android:name="android.hardware.fingerprint" android:required="true" />

您始终需要许可才能访问手机的任何硬件资源。因此,它将为您做。

然后在活动中,执行以下代码:

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
        fingerprintManager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE);
        if (!fingerprintManager.isHardwareDetected()) {
            Toast.makeText(getApplicationContext(), "Your device doesn't support fingerprint authentication", Toast.LENGTH_SHORT).show();
        }
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) {
            Toast.makeText(getApplicationContext(), "Please enable the fingerprint permission", Toast.LENGTH_SHORT).show();
        ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.USE_FINGERPRINT}, FingerprintHandler.FINGERPRINT_PERMISSION);
        }
        if (!fingerprintManager.hasEnrolledFingerprints()) {
            Toast.makeText(getApplicationContext(), "Your Device has no registered Fingerprints! Please register atleast one in your Device settings", Toast.LENGTH_LONG).show();
        }
}

我认为它对您有用。谢谢!

相关内容

  • 没有找到相关文章

最新更新