android得到/data/app下安装包的大小size

本文介绍了一种在Android设备上获取已安装应用所占用磁盘空间的方法。由于SDK 2.1的PackageManager API未提供直接查询功能,文章详细描述了如何通过shell命令并结合Java代码实现这一目标。

由于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;  
    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值