[Android]读取自身安装包信息

      今天鼓捣QQ时发现其apk第一目录下有个文件夹“com”,其下N多级目录后终于是个名为“wup.properties”的文本文件。如下图:

[Android]读取自身安装包信息_第1张图片


好奇心大起,这就是说android的程序可以像J2me那样读取本安装包任意地方的信息了(以前以为只能读取res/raw下的内容)。反编译之,经查,终于找到一个类名为“com/tencent/qq/jce/wup/WupInfo”。其代码如下:


package com.tencent.qq.jce.wup; import java.io.InputStream; import java.util.Properties; public class WupInfo { private static String a; private static String b; private static String c; static { String str = "unknown"; a = null; b = null; c = null; try { InputStream localInputStream = WupInfo.class.getResourceAsStream("/com/qq/jce/wup/wup.properties"); Properties localProperties = new Properties(); localProperties.load(localInputStream); localInputStream.close(); a = localProperties.getProperty("client.info"); b = localProperties.getProperty("client.built"); c = localProperties.getProperty("client.number"); if (a == null) a = "Tencent Taf"; if (b == null) b = str; if (c == null) c = str; return; } catch (Throwable localThrowable) { } } }


      关键代码就是try{}catch(){}中的内容了,利用getResourceAsStream("file_path")来获取输入流。我依样画葫芦在自己建个工程及在工程目录下建个相同目录结构的"wup.properties"文件,代码试下,不成功。后一想是eclipse未将该文件夹"com"一起打包进apk中,将手机中的测试包导出一查,确实如此。
      解决办法是手动将“com/qq/jce/wup/wup.properties”放进apk压缩包后重新签名,成功。

你可能感兴趣的:(eclipse,android,properties,String,null,j2me)