Android 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。下面是PackageManager内部的用法:

 

public void getPackageSizeInfo(String packageName, IPackageStatsObserver observer) { 
getPackageSizeInfo(packageName, UserHandle.myUserId(), observer);

}
        因此,把UserHandle.myUserId()的实作部分整合进来就可用了:
private void getPacakgeStats(String pkgName) {  
    if (pkgName != null) {  
        try {  
            Method getPackageSizeInfo = mPm.getClass().getDeclaredMethod("getPackageSizeInfo", String.class,  
                    int.class, IPackageStatsObserver.class);  
            /** 
             * after invoking, PkgSizeObserver.onGetStatsCompleted() will be called as callback function. <br> 
             * About the third parameter ‘Process.myUid() / 100000’,please check: 
             * <android_source>/frameworks/base/core/java/android/content/pm/PackageManager.java: 
             * getPackageSizeInfo(packageName, UserHandle.myUserId(), observer); 
             */  
            getPackageSizeInfo.invoke(mPm, pkgName, Process.myUid() / 100000, new PkgSizeObserver());  
        } catch (Exception e) {  
            Log.e(TAG, e.toString());  
        }  
    }  
}  
原文地址:https://www.cnblogs.com/zhouliweiblog/p/3389550.html