java.lang.IllegalArgumentException: wrong number of arguments; expected 三, got 2
java.lang.IllegalArgumentException: wrong number of arguments; expected 3, got 2
求大神啊,反射出的问题,invoke方法。整死搞不出来了啊
------解决思路----------------------
看异常是说getPackageSizeInfo这个方法需要3个参数,你这里只给了2个。可以调用m.getParameterTypes得到方法的参数表类型,看看是差了哪个参数
求大神啊,反射出的问题,invoke方法。整死搞不出来了啊
private void scanCache() {
pm = getPackageManager();
new Thread() {
public void run() {
// 通过发射获取方法
Method getPackageSizeInfoMethod = null;
Method[] methods = PackageManager.class.getMethods();
for (Method method : methods) {
if ("getPackageSizeInfo".equals(method.getName())) {
getPackageSizeInfoMethod = method;
}
}
int progress = 0;
List<PackageInfo> infos = pm.getInstalledPackages(0);
pb.setMax(infos.size());
for (PackageInfo packageInfo : infos) {
String packName = packageInfo.packageName;
try {
getPackageSizeInfoMethod.invoke(pm,packName, new MyDataObserver(packName));
}catch(Exception e) {
e.printStackTrace();
}
progress++;
pb.setProgress(progress);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
------解决思路----------------------
看异常是说getPackageSizeInfo这个方法需要3个参数,你这里只给了2个。可以调用m.getParameterTypes得到方法的参数表类型,看看是差了哪个参数