由于sdk2.1的PackageManager没有提供查看已安装apk所占磁盘空间大小的api,所以得到size费了一点精力。
一 由于访问/data/app目录需要root权限,所以在模拟器上要进行程序调试时,需要先在电脑cmd下运行以下命令:
adb shell
su
chmod 777 /data/app (改变该目录的读写属性)
二 接下来就可以在模拟器上执行android程序中所用到的有关/data/app目录的shell命令了。
获取app size的部分代码如下:
public static String getappsize(Context context, String packagename)
{
String appsize = "";
try
{
final Process m_process = Runtime.
getRuntime().exec("ls -l /data/app");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(m_process.getInputStream()), 8192);
String ls_1 = null;
try {
while ((ls_1 = bufferedReader.readLine()) != null)
{
String size=ls_1.subSequence(ls_1.lastIndexOf("system") +
7,ls_1.indexOf(":")-14).toString();
pkgname=ls_1.subSequence(ls_1.indexOf(":")+4,
ls_1.indexOf(".apk")-2).toString();
if(pkgname.equalsIgnoreCase(packagename))
{
appsize=size;
}
}
} catch (IOException e)
{
e.printStackTrace();
} finally
{
try
{
bufferedReader.close();
} catch (IOException e)
{
// TODO: 异常处理
}
}
} catch (java.io.IOException ee) {
System.err.println("RunScript have a IO error :" + ee.getMessage());
return null;
} catch (Exception ex) {
System.err.print("RunScript have a error :" + ex.getMessage());
return null;
}
return appsize;
}