首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android nougat USE_FINGERPRINT权限

Android nougat USE_FINGERPRINT权限
EN

Stack Overflow用户
提问于 2017-11-22 14:52:52
回答 2查看 10.5K关注 0票数 9

我正在尝试实现指纹,不确定这是不是一个问题,但在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;
    }
EN

回答 2

Stack Overflow用户

发布于 2018-07-31 05:26:13

它不会要求您授予许可,因为它的保护级别(正常,而不是危险)。因此,在用户不知情的情况下,只需请求即可自动授予访问权限。

票数 3
EN

Stack Overflow用户

发布于 2017-11-22 15:09:20

请按照以下步骤操作:

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

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

您始终需要权限才能访问电话的任何硬件资源。所以它会帮你做到这一点。

然后在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();
        }
}

我想这对你很管用。谢谢!!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47428491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档