2016-06-21 11 views
12

Ich habe gerade einen Verizion Samsung Galaxy S5 (SM-G900V) an die G900VVRU2DPD1 Version über die Anleitung, aktualisiert aufgelistet bei http://www.androidofficer.com/2016/06/g900vvru2dpd1-android-601-marshmallow.htmlAndroid M FingerprintManager.isHardwareDetected() gibt falsch auf ein Samsung Galaxy S5

Als ich das laufen Code unten, isHardwareDetected() gibt 'false' zurück. Ich würde erwarten, dass es "wahr" zurückkehrt.

Das Googeln, das ich gemacht habe, führte zu keinerlei Informationen wie der S5-Fingerabdruckleser, der unter Marshmallow unterstützt wird.

Hat jemand Informationen über den Fingerabdruckleser der S5, der unterstützt wird?

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

Haben Sie dieses Problem gelöst? Ich habe das gleiche Problem – Miguel

Antwort

8

Endlich gelöst. Es sieht so aus, als ob die Android-Standard-API nicht in der Lage ist, einige Samsung-Geräte zu handhaben. Daher besteht die Lösung darin, die Samsung-Bibliotheken für dieses Problem hinzuzufügen.

Sie können eine Dokumentation und die Bibliotheken finden Sie hier: http://developer.samsung.com/galaxy/pass

Nachdem die Bibliotheken hinzufügen, können Sie eine neue Berechtigung zu Ihrem Manifest hinzufügen:

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

Und schließlich könnten Sie diese Methode verwenden :

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, würde dies für andere nicht Samsung Geräte funktionieren? – Kennedy

+1

@Kennedy nein, http://developer.samsung.com/galaxy/pass sagt über welche Geräte ihr SDK verwenden kann: "Jedes Samsung Mobile Gerät, das den Fingerabdrucksensor und den Fingerabdruck-Service mit Android 4.2 unterstützt (Jelly Bean API 17) und darüber." – Jules

Verwandte Themen