2

我想使用一个 android 内部类 com.android.internal.widget.LockPatternUtils 。

我搜索了示例,我得到了这个:

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

但是,我无法导入,自动导入没有出现并且手动执行

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 常量的 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 应用程序。

于 2013-07-05T11:30:25.750 回答
2

您不能使用 Android 内部类,它们不附带公共 SDK。

您可以构建自己的 SDK,或多或少地像这里一样公开它们如何构建具有隐藏和内部 API 可用的 Android SDK?

不建议这样做,因为您将无法保证。

于 2013-07-05T11:32:41.133 回答