我正在尝试实现指纹,不确定这是不是一个问题,但在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;
}
发布于 2018-07-31 05:26:13
它不会要求您授予许可,因为它的保护级别(正常,而不是危险)。因此,在用户不知情的情况下,只需请求即可自动授予访问权限。
发布于 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();
}
}
我想这对你很管用。谢谢!!
https://stackoverflow.com/questions/47428491
复制相似问题