背景:因为HDFS小文件太多了 导致HDFS集群压力很大 所以项目由原来的存储文件方式改成了 把文件流以二进制的方式存入一个个大的文件块 通过文件 位置信息和偏移量信息来标记文件
网上很多通过APK路径 来获取APK的签名和权限列表的 但是直接对接流的基本没有 而且封装的方法 也没有好的可以接入流的接口
通过输入流获取APK权限列表:
思路:APK权限列表存在于APK的 AndroidManifest.xml 文件中 通过截取APK输入流中的
AndroidManifest.xml 文件流 解析xml文件 获取相关的权限列表
/** * DESC: 获取手机的apk安装包中用户权限列表 * @param filePath : 块文件路径 * @param position : APK文件所在块的位置 * @param filePath : APK文件偏移量 * */ public static List<String> getAPKUserPermitsByPosAndOffset(String filePath,long position, int offset){ getHDFS(); List<String> p_list= new ArrayList<String>(); Path path = new Path(filePath); FSDataInputStream dataStream; try { dataStream = hdfs.open(path); InputStream new_dataStream=getInputStreamByPosAndOffset(dataStream,position,offset); readAPkZipInputStream(new_dataStream,p_list); } catch (Exception e) {