最近用到了反射,最后虽然做到了,不过感觉网上相关的介绍都不是很清楚,就自己总结了下。
反射调用一个@hide的方法:
例如android.widget.AutoCompleteTextView包下面的setDropDownAlwaysVisible函数,这个函数在源码中是被hide掉的,调用的时候肯定要先获得一个AutoCompleteTextView的具体对象,所以这个对象也要在反射的时候被指定。
主要的反射函数:
public Object setDropDownAlwaysVisible(AutoCompleteTextView data,boolean b) throws
ClassNotFoundException, NoSuchMethodException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException{
Object[] params = new Object[1];
params[0] = b;
Class ownerClass = Class.forName("android.widget.AutoCompleteTextView");
Log.i(TAG,"ownerclass is "+ownerClass);
Class[] args= new Class[1];
args[0] = boolean.class;
Method method = ownerClass.getDeclaredMethod("setDropDownAlwaysVisible", args);
Log.i(TAG,"method is "+method);
method.setAccessible(true);