首页 > 其他 > 详细

PackageManager.getPackageSizeInfo||UserHandle.myUserId()

时间:2016-03-11 22:01:09      阅读:499      评论:0      收藏:0      [点我收藏+]

跟着教程去写获得缓存的逻辑。但是死活不出现。查了一下log说我参数不对。

然后看了看源码。和教程的不一样。多了一个参数。UserHandle.myUserId()。查了一下,发写法

 

新写法:

Method myUserId = UserHandle.class.getDeclaredMethod("myUserId");  //先获得这个userid(我也不太清楚是干嘛的,稍后我查查)

int userID = (Integer) myUserId.invoke(pm,null);  //pm是packagemanager。自己getpackagemanager就好了



getPackageSizeInfoMethod.invoke(pm,info.packageName,userID,new MyDataObserver());  //info.packagename是包名  mydataobserver是实现类。自己完成回调函数

 

 

//回调函数参考

private class MyDataObserver extends IPackageStatsObserver.Stub {

@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
final long cache = pStats.cacheSize;
long code = pStats.codeSize;
long data = pStats.dataSize;
String packageName = pStats.packageName;
final ApplicationInfo appinfo;
try {
appinfo = pm.getApplicationInfo(packageName, 0);

runOnUiThread(new Runnable() {
public void run() {
tv_scan_status.setText("正在扫描:" + appinfo.loadLabel(pm));
if (cache > 0) {
TextView tv = new TextView(getApplicationContext());
tv.setText(appinfo.loadLabel(pm)
+ "-缓存大小:"
+ Formatter.formatFileSize(
getApplicationContext(), cache));
tv.setTextColor(Color.BLACK);
ll_container.addView(tv, 0);
}
}
});
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

PackageManager.getPackageSizeInfo||UserHandle.myUserId()

原文:http://www.cnblogs.com/lemniscate317/p/5267212.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!