从Android5.0以后,支持多个apk动态部署,这导致以前通过单一apk获取包路径下的所有类的方法失效,不过稍微修改一下原先的代码就可以,代码如下

 public static final List<Class<?>> getClassesFromPackage(Context ctx, String pkgName) {
List<Class<?>> rtnList = new ArrayList<Class<?>>();
String[] apkPaths = ctx.getApplicationInfo().splitSourceDirs;// 获得所有的APK的路径
DexFile dexfile = null;
Enumeration<String> entries = null;
String name = null;
for (String apkPath : apkPaths) {
try {
dexfile = new DexFile(apkPath);// 获得编译后的dex文件
entries = dexfile.entries();// 获得编译后的dex文件中的所有class
while (entries.hasMoreElements()) {
name = (String) entries.nextElement();
if (name.startsWith(pkgName)) {// 判断类的包名是否符合
rtnList.add(Class.forName(name));
}
}
} catch (ClassNotFoundException | IOException e) {
} finally {
try {
if (dexfile != null) {
dexfile.close();
}
} catch (IOException e) {
}
}
}
return rtnList;
}

最新文章

  1. Hibernate(4)——主键生成策略、CRUD 基础API区别的总结 和 注解的使用
  2. 转载--改变ubuntu默认编码为GBK
  3. python-open文件处理
  4. acm pc^2的配置与使用
  5. C# 反射操作方法
  6. MySQL基础之第14章 存储过程和函数
  7. SSH无法连接服务器
  8. 2016.7.13abstract
  9. Jquery学习笔记:通过层次关系获取jquery对象
  10. iOS基础 - 数据库CoreData
  11. offsetHeight/Width clientHeight/Width scrollHeight/Width等高宽算法
  12. 【LCT+主席树】BZOJ3514 Codechef MARCH14 GERALD07加强版
  13. 开始学习 Backbone
  14. Mysql_连接字符串
  15. spark submit参数调优
  16. InfluxDB、grafana、collect部署监控(centos6.8)
  17. java中构造方法和普通方法的区别
  18. Limu:有关JavaScript的那些值得一看的书
  19. 2018.07.08 NOIP模拟 好数(线段树)
  20. extern函数声明(转)

热门文章

  1. Android中的颜色值
  2. Android模拟器Intel Atom下载安装配置
  3. mouseleave mouseout时候悬浮框不应该消失的时候消失了 css 解决办法
  4. RocEDU.阅读.写作《苏菲的世界》书摘(二)
  5. Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析
  6. oracle查看被锁的表以及解锁表
  7. FASTQ format
  8. C# Nginx平滑加权轮询算法
  9. mongodb可视化客户端下载
  10. MapReduce 应用实例