没关系,我已经知道了。我已根据此tutorial修改了以下代码。
如果有人有兴趣的解决方案,那就是:
Class> c = Class.forName("com.android.internal.widget.LockPatternUtils");
Constructor>[] constructors = c.getDeclaredConstructors();
Constructor> constructor = null;
for (int i = 0; i < constructors.length; i++) {
constructor = constructors[i];
if (constructor.getGenericParameterTypes().length == 0)
break;
}
constructor.setAccessible(true);
Object clazz = constructor.newInstance(context, true);
Method method = clazz.getClass().getDeclaredMethod("getKeyguardStoredPasswordQuality");
Object object = method.invoke(clazz);
result = object.toString();
上述解决方案要求LockPatternUtils.java类的公共构造函数被定义为:
public LockPatternUtils(Context context) {...}
如果构造未来的变化(2013年后),解决方案将需要修改。
注:以上是我了解Reflection的用法的练习。但是,在使用Android制作应用程序时,应该谨慎使用Reflection并在绝对需要时使用。