4

pass sdk v1.2.1 を使用しています。プログラミング ガイドによると、指紋ダイアログに表示されるスタンバイ テキストを変更する方法があります。このガイドでは、次のように、機能Spass.DEVICE_FINGERPRINT_AVAILABLE_PASSWORDが呼び出し可能かどうかを確認する必要があると述べていますchangeStandbyString

 if(pass.isFeatureEnabled(Spass.DEVICE_FINGERPRINT_AVAILABLE_PASSWORD)) {
    mSpassFingerprint.changeStandbyString("Touch your fingerprint or press the button for launching own menu”);
 }

Galaxy S5でAndroid 6.0とGalaxy S5 Android 5.xxの両方で使用しようとすると、例外が発生します

IllegalStateException: setStandbyString is not supported.

少し奇妙に思えるのは、内部のメソッドchangeStandbyStringが true を返した場合に例外が呼び出されることです。これは、チェック時に呼び出されたのと同じメソッドであることが判明しました

isFeatureEnabled(Spass.DEVICE_FINGERPRINT_AVAILABLE_PASSWORD); 

何かが間違っているように見えますが、何か考えはありますか?

これは、Android Studio でデバッグするときに生成されるコードです。

public void changeStandbyString(String var1) {
        this.f();
        if(this.d()) {
            throw new IllegalStateException("setStandbyString is not supported.");
        } else if(var1 == null) {
            throw new IllegalArgumentException("the standby text passed is null.");
        } else if(var1.length() > 100) {
            throw new IllegalArgumentException("the standby text passed is longer than 100 characters.");
        } else {
            this.m = var1;
        }
    }

public boolean isFeatureEnabled(int var1) {
        if(this.a == null) {
            throw new IllegalStateException("initialize() is not Called first.");
        } else {
            switch(var1) {
            case 0:
                return this.a.a();
            case 1:
            case 2:
                return this.a.b();
            case 3:
                return this.a.c();
            case 4:
                return this.a.d();
            default:
                throw new IllegalArgumentException("type passed is not valid");
            }
        }
    }

メソッドd()は、両方の状況で呼び出されるものであることif(!this.d())に注意してくださいchangeStandbyString.

public void setDialogTitle(String var1, int var2) {
        this.f();
        if(!this.b()) {
            throw new IllegalStateException("setDialogTitle is not supported.");
        } else if(var1 == null) {
            throw new IllegalArgumentException("the titletext passed is null.");
        } else if(var1.length() > 256) {
            throw new IllegalArgumentException("the title text passed is longer than 256 characters.");
        } else if(var2 >>> 24 != 0) {
            throw new IllegalArgumentException("alpha value is not supported in the titleColor.");
        } else {
            this.f = var1;
            this.g = var2 + -16777216;
        }
    }

ここでは、フラグが( ) のときに呼び出されるメソッドである false を返すthrow new IllegalStateException("setDialogTitle is not supported.");場合にのみ発生します。this.b()isFeaturedEnabledSpass.DEVICE_FINGERPRINT_CUSTOMIZED_DIALOGSpass.DEVICE_FINGERPRINT_CUSTOMIZED_DIALOG = 2

4

1 に答える 1

0

プログラミング ガイドのドキュメントが間違っています。false を返す場合isFeatureEnabled(Spass. DEVICE_FINGERPRINT_AVAILABLE_PASSWORD)、この関数を有効にすることができます。コード サンプルを確認して、この機能の使用方法を詳しく確認できます。

于 2016-10-13T16:00:16.187 に答える