2016-06-21 16 views
12

Ho appena aggiornato un Verizion Samsung Galaxy S5 (SM-G900V) per la versione G900VVRU2DPD1 tramite le istruzioni del manuale elencati http://www.androidofficer.com/2016/06/g900vvru2dpd1-android-601-marshmallow.htmlAndroid M FingerprintManager.isHardwareDetected() restituisce false su un Samsung Galaxy S5

Quando eseguo il codice sottostante, isHardwareDetected() restituisce 'false'. Mi aspetterei che restituisse "vero".

Il googling che ho fatto non ha prodotto alcuna informazione in un modo o nell'altro sul lettore di impronte digitali S5 supportato da Marshmallow.

Qualcuno ha informazioni sul lettore di impronte digitali di S5 supportato?

FingerprintManager manager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE); 
    if (manager != null) { 

     if (ActivityCompat.checkSelfPermission(this, permission.USE_FINGERPRINT) != 
       PackageManager.PERMISSION_GRANTED) { 
      retVal.append(INDENT).append("Fingerprint permission was not granted") 
        .append(EOL); 
     } else { 
      retVal.append(INDENT).append("Fingerprint hardware detected: ") 
        .append(manager.isHardwareDetected()).append(EOL); 
      retVal.append(INDENT).append("Has Enrolled Fingerprint(s): ") 
        .append(manager.hasEnrolledFingerprints()).append(EOL); 
     } 
    } else { 
     retVal.append(INDENT).append("no FingerprintManager available").append(EOL); 
    } 
+0

Hai risolto questo problema ?? Sto avendo lo stesso problema – Miguel

risposta

8

Finalmente risolto. Sembra che l'API Android di default non sia in grado di gestire alcuni dispositivi Samsung, quindi la soluzione è aggiungere le librerie Samsung per questo problema.

È possibile trovare della documentazione e le librerie qui: http://developer.samsung.com/galaxy/pass

Dopo aggiungere le librerie, è necessario aggiungere un nuovo permesso per il vostro manifesto:

<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" /> 

E, infine, è possibile utilizzare questo metodo :

private boolean isFingerprintSupported() { 
    boolean isFingerprintSupported = fingerprintManager != null && fingerprintManager.isHardwareDetected(); 
    if (!isFingerprintSupported && SsdkVendorCheck.isSamsungDevice()) { 
    Spass spass = new Spass(); 
    try { 
     spass.initialize(context); 
     isFingerprintSupported = spass.isFeatureEnabled(Spass.DEVICE_FINGERPRINT); 
    } catch (SsdkUnsupportedException | UnsupportedOperationException e) { 
     // Error handling 
    } 
    } 
    return isFingerprintSupported; 
} 
+0

Hey Miguel, questo funzionerebbe per altri dispositivi non Samsung? – Kennedy

+1

@Kennedy no, http://developer.samsung.com/galaxy/pass dice su quali dispositivi possono utilizzare il proprio SDK: "Qualsiasi dispositivo Samsung Mobile che supporta il sensore di impronte digitali e il servizio Fingerprint con Android 4.2 (Jelly Bean API 17) e al di sopra." – Jules

Problemi correlati