使用内部android类



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

我搜索了一些例子,得到了这个:

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

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

import com.android.internal.widget.LockPatternUtils 

不起作用。

这是如何处理的?我认为创建一个接口有一些问题,但不确定

编辑:我得到了这个:

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

这适用于模式锁,但我不知道密码锁

使用反射访问内部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;
}

这是如何处理的?

这些类只能作为完整固件构建的一部分使用,而不能从Android SDK应用程序中使用。

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

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

不建议这样做,因为您没有任何保证。

最新更新