Android获取应用程序大小的方法

2019-12-10 20:13:39于丽

                      }  
                  }  
            });  

            //加载内部类SizeObserver  
            Class<?> sizeObserverClass = Class.forName("com.android.settings.ManageApplications$SizeObserver", true, mmsCtx.getClassLoader());  
            Constructor sizeObserverConstructor = sizeObserverClass.getDeclaredConstructors()[0];  
            sizeObserverConstructor.setAccessible(true);  
            /* 
             * 创建SizeObserver对象,两个参数,第一个是外部类的对象, 
             * 也就是ManageApplications对象,第二个是msgId,也就是 
             * 分发消息的id,跟Handler接收的msgId一样。 
             * */  
            Object soObject = sizeObserverConstructor.newInstance(maObject, 1);  
            //执行invokeGetSize方法  
            sizeObserverClass.getMethod("invokeGetSize", String.class,  
                    CountDownLatch.class).invoke(soObject, packageName, new CountDownLatch(1));          
        } catch (NameNotFoundException e) {  
            e.printStackTrace();  
        } catch (ClassNotFoundException e) {  
            e.printStackTrace();  
        } catch (IllegalAccessException e) {  
            e.printStackTrace();  
        } catch (IllegalArgumentException e) {