(原)android4.2以后获取应用程序和缓存大小的方法(源码有改变)_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > (原)android4.2以后获取应用程序和缓存大小的方法(源码有改变)

(原)android4.2以后获取应用程序和缓存大小的方法(源码有改变)

 2015/2/8 15:42:46  TTCOOL  程序员俱乐部  我要评论(0)
  • 摘要:以前获取应用的大小是用PackageManagermPackageManager=getPackageManager();try{MethodgetPackageSizeInfoMethod=PackageManager.class.getDeclaredMethod("getPackageSizeInfo",String.class,IPackageStatsObserver.class);getPackageSizeInfoMethod.invoke(mPackageManager
  • 标签:程序 android 方法 源码 应用 应用程序 缓存

以前获取应用的大小是用

 PackageManager mPackageManager= getPackageManager();

class="brush:java;gutter:true;">try {Method getPackageSizeInfoMethod = PackageManager.class.getDeclaredMethod("getPackageSizeInfo", String.class,    
              IPackageStatsObserver.class);  
getPackageSizeInfoMethod.invoke(mPackageManager, packageInfo.packageName,new MyObserver());  
} catch (Exception e) {  
} 

 

class MyObserver extends IPackageStatsObserver.Stub {  
  
    @Override  
    public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)  
            throws RemoteException {  
        long cacheSize = pStats.cacheSize;  
        String packageName = pStats.packageName;  
        String formatFileSize = Formatter.formatFileSize(  
                getApplicationContext(), cacheSize);  
        System.out.println(packageName + ":" + formatFileSize);  
    }  
}  

 

但在4.2后 PackageManager.getPackageSizeInfo(String packageName, IPackageStatsObserver observer)不可用,

改为PackageManager.getPackageSizeInfo(String packageName, int userHandle, IPackageStatsObserver observer),

至于增加的参数userHandle的解释是:The user whose size information should be retrieved。

这个userHandle怎么来? 通过系统类的UserHandle.myUserId()获取;

Method myUserId = UserHandle.class.getDeclaredMethod("myUserId");  
int userID = (Integer) myUserId.invoke(mPackageManager,null);  

 获取了以后就可以使用新的getPackageSizeInfo函数了。

getPackageSizeInfoMethod.invoke(mPackageManager,packageInfo.packageName, userID, new MyObserver() 
);

 

上一篇: 谁偷了我的热更新?Mono,JIT,IOS 下一篇: 没有下一篇了!
发表评论
用户名: 匿名