2

Android 内部クラス com.android.internal.widget.LockPatternUtils を使用したい。

例を検索したところ、次のようになりました。

LockPatternUtils lpu = new LockPatternUtils(this.getContentResolver());

ただし、インポートできません。autoimportは表示されず、手動で行っています

import com.android.internal.widget.LockPatternUtils 

動作しません。

これはどのように処理されますか?インターフェイスの作成について何かがあったと思いますが、それについてはわかりません

編集:私はこれを得ました:

  boolean patternLocked = android.provider.Settings.System.getInt(
     getContentResolver(),Settings.System.LOCK_PATTERN_ENABLED, 0)==1;

それはパターンロックでは機能しますが、ピンまたはパスワードロックについてはわかりません

4

3 に答える 3

6

リフレクションを使用して Android の内部メソッド getActivePasswordQuality ( LockPatternUtils.javaの 350 行目) にアクセスし、返される int をDevicePolicyManager Constantsのいずれかの int と比較します。

protected boolean isSecure() {

    String LOCK_PATTERN_UTILS = "com.android.internal.widget.LockPatternUtils";

    try {
        Class<?> lockPatternUtilsClass = Class.forName(LOCK_PATTERN_UTILS);
        Object lockPatternUtils = lockPatternUtilsClass.getConstructor(Context.class).newInstance(this);
        Method method = lockPatternUtilsClass.getMethod("getActivePasswordQuality");
        int lockProtectionLevel = Integer.valueOf(String.valueOf(method.invoke(lockPatternUtils)));

        // Then check if lockProtectionLevel == DevicePolicyManager.TheConstantForWhicheverLevelOfProtectionYouWantToEnforce, and return true if the check passes, false if it fails
    }
    catch (Exception ex) {
        ex.printStackTrace();
    }

    return false;
}
于 2014-08-15T17:58:13.677 に答える
2

Android の内部クラスは使用できません。公開 SDK には含まれていません。

ここで行うように、多かれ少なかれそれらを公開する独自の SDK を構築できます。

保証がないため、これはお勧めしません。

于 2013-07-05T11:32:41.133 に答える
2

これはどのように処理されますか?

これらのクラスは、Android SDK アプリからではなく、完全なファームウェア ビルドの一部としてのみ利用できます。

于 2013-07-05T11:30:25.750 に答える