¿Por qué `hasEnrolledFingerprints` está dando error que requiere un permiso sólo en mi Fragmento pero no en la Actividad en el Ejemplo de Google?

Estoy tratando de implementar la API de huellas digitales de Google en mi aplicación (en mi fragmento específicamente). Google ha dado un ejemplo, pero se implementa dentro de una actividad aquí .

Mi pregunta específica es que el código abajo para comprobar si hay huellas registradas ya, me está dando un error (captura de pantalla abajo):

Pregunta -> ¿Qué cambio debo hacer para que funcione en mi Fragmento (en contraposición a una actividad como la de Google)?

if (!mFingerprintManager.hasEnrolledFingerprints()) { purchaseButton.setEnabled(false); // This happens when no fingerprints are registered. Toast.makeText(getActivity(), "Go to 'Settings -> Security -> Fingerprint' and register at least one fingerprint", Toast.LENGTH_LONG).show(); return; } 

Introduzca aquí la descripción de la imagen

Android 6.0 debe "pedir" permiso en tiempo de ejecución. https://developer.android.com/training/permissions/requesting.html

Los permisos peligrosos pueden dar acceso a la aplicación a los datos confidenciales del usuario. Si su aplicación muestra un permiso normal en su manifiesto, el sistema concede el permiso automáticamente. Si elige un permiso peligroso, el usuario debe darle aprobación explícita a su aplicación.

Incluso si usted tiene <uses-permission android:name="android.permission.USE_FINGERPRINT"/> en su manifiesto, Mi comprensión es que usted debe pedir el permiso. Por lo tanto, parece que el error se debe a que su aplicación no tiene permiso para utilizar el gestor de huellas dactilares.

(Sólo como el 90% seguro de esto, ya que estoy pegando con 5.0 por ahora, lo siento)


Actualización: http://developer.android.com/reference/android/Manifest.permission.html#USE_FINGERPRINT

Public static final String USE_FINGERPRINT ———- Añadido en el nivel 23 de API

Permite que una aplicación utilice hardware de huella digital.

Nivel de protección: normal

Por lo tanto, parece que no debería necesitar este permiso en tiempo de ejecución.

1) ¿Tiene el permiso en su manifiesto?

2) Debe poner el siguiente código en el suyo para comprobar si el permiso es revocado / no dado por alguna razón.

 if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.USE_FINGERPRINT) // this might need massaged to 'android.permission.USE_FINGERPRINT' != PackageManager.PERMISSION_GRANTED) { Log.d ("TEST", "You don't have permission"); } 

(O algo cercano a esto) como el ejemplo de https://developer.android.com/training/permissions/requesting.html

  • Error de logcat extraño al cambiar a nuevo fragmento
  • Fragmento customAnimation no funciona en Lollipop
  • Fragmento se superpone a veces al cambiar las pestañas
  • Vista de lista de Android dentro de un fragmento
  • Error de getApplicationContext () Android
  • Cómo configurar el título de DialogFragment?
  • Android Fragmentos y animación
  • Cómo crear un diseño multi-panel en android
  • Fragmentos en Android 2.2.1, 2.3, 2.0. es posible?
  • ¿Hay un método como setResult () en fragmento?
  • Android: Fragment y ViewPager comienza siempre en la primera posición
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.