Android nougat USE_FINGERPRINT权限

ret*_*oid 6 android android-fingerprint-api

我正在尝试实现指纹并且不确定它是否是一个问题但是在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" />
Run Code Online (Sandbox Code Playgroud)

在片段中

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;
    }
Run Code Online (Sandbox Code Playgroud)

Ch4*_*t4r 16

这个是正常的.指纹权限未标记为危险,因此您无需请求访问权限.如果您在清单中声明权限,则会自动授予它.

这是因为您无法直接访问传感器,并且所有对它的调用都通过指纹管理器进行代理,这在某种程度上是有限的.


Ank*_*dar 1

请按照以下步骤操作:

在上面的权限清单中添加以下内容:

 <uses-feature android:name="android.hardware.fingerprint" android:required="true" />
Run Code Online (Sandbox Code Playgroud)

您始终需要获得权限才能访问手机的任何硬件资源。所以它会为你做到这一点。

然后在 Activity 中执行以下代码:

   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();
        }
}
Run Code Online (Sandbox Code Playgroud)

我认为这对你有用。谢谢!!