Android 处理txt文件类FileUtils 利用java反射机制访问非sdk类和函数
2010-09-10 00:59:00 来源:WEB开发网System.arraycopy(last, len, last, 0, last.length - len);
System.arraycopy(data, 0, last, last.length - len, len);
}
if (ellipsis == null || !rolled) return new String(last);
return ellipsis + new String(last);
} else {
ByteArrayOutputStream contents = new ByteArrayOutputStream();
int len;
byte[] data = new byte[1024];
do {
len = input.read(data);
if (len > 0) contents.write(data, 0, len);
} while (len == data.length);
return contents.toString();
}
} finally {
input.close();
}
}
}
网上的搜索到的信息
android系统中,有很多类和方法是@hide属性的,这意味着这些类和方法是不会出现在androidsdk中的。但是有的时候我们的程序却需要调用这些个类和方法来完成一些工作。怎么办呢?一个办法是把这些个类和方法从android源代码中拷贝出来,放到我们的程序中一起编译使用。不过有可能会遇到一个比较极端的情况,那就是你花费了很久,终于把自己的程序编译成功了,却发现你几乎把整个android
framework的源代码都拷贝出来了。有些时候这样显然是得不偿失的。你花费了大量的时间,却收效甚微。那我们现在来看一下第二种方法,利用java 的反射机制。关于java的反射机制大家可以参考java的文档或者网络上一些关于这个方面的文章。这里,我只介绍如何在android里使用。下面看一个例子(将黄色的代码复制一下就可以测试了,方法都是上面的)。
try {
Class hideClass = Class.forName("android.os.FileUtils");
//Method hideSubprocess = hidecClass.getMethod("createSubprocess",
// String.class, String.class, String.class, int[].class);
Method[] hideMethod = hideClass.getMethods();
int i = 0;
for (;i < hideMethod.length;i++)
{
Log.i(LOG_TAG,hideMethod[i].getName());
}
Method copyFile = hideClass.getMethod("copyFile", File.class,File.class);
File tmpPackageFile = getFileStreamPath(TMP_FILE_NAME);
更多精彩
赞助商链接