Java 类android.content.pm.PackageStats 实例源码
项目:stynico
文件:MainActivity.java
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
String packageName = pStats.packageName;
long cacheSize = pStats.cacheSize;
long codeSize = pStats.codeSize;
long dataSize = pStats.dataSize;
cacheS += cacheSize;
// sb.delete(0, sb.length());
if (cacheSize > 0) {
sb.append("")
.append("")
.append("")
.append("")
;
//Log.e("aaaa", sb.toString());
}
}
项目:Bailan
文件:CleanCacheActivity.java
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
//获取缓存
long cache = pStats.cacheSize;
if(cache>0){
try {
CacheInfo cacheInfo = new CacheInfo();
PackageManager pm = getPackageManager();
//添加缓存信息到ui界面
//获取包名
cacheInfo.packname = pStats.packageName;
PackageInfo packInfo = pm.getPackageInfo(cacheInfo.packname, 0);
cacheInfo.cachesize = cache;
cacheInfo.appname = packInfo.applicationInfo.loadLabel(pm).toString();
cacheInfo.icon = packInfo.applicationInfo.loadIcon(pm);
Message msg = Message.obtain();
msg.obj = cacheInfo;
handler.sendMessage(msg);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
项目:safety
文件:CleanCacheActivity.java
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
long cacheSize = pStats.cacheSize;
if (cacheSize > 0) {
CacheInfo cacheInfo = new CacheInfo();
String appName = packageInfo.applicationInfo.loadLabel(pm)
.toString();
if (appName.isEmpty()) {
cacheInfo.appName = packageInfo.packageName;
} else {
cacheInfo.appName = appName;
}
Drawable icon = packageInfo.applicationInfo.loadIcon(pm);
if (icon == null) {
cacheInfo.icon = getResources().getDrawable(
R.drawable.ic_launcher);
} else {
cacheInfo.icon = icon;
}
cacheInfo.cacheSize = cacheSize;
cacheInfos.add(cacheInfo);
}
}
项目:apkInstaller
文件:MainActivity.java
/**
* 返回用户已安装应用列表
*/
public List<ApkModel> getAppList(Context context) {
PackageManager pm = context.getPackageManager();
List<PackageInfo> packageInfos = pm.getInstalledPackages(0);
List<ApkModel> appInfos = new ArrayList<>();
for (PackageInfo packageInfo : packageInfos) {
ApplicationInfo app = packageInfo.applicationInfo;
if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
// 非系统应用
PackageStats stats = new PackageStats(packageInfo.packageName);
ApkModel appInfo = new ApkModel();
appInfo.packageName = packageInfo.packageName;
appInfo.versionCode = packageInfo.versionCode;
appInfo.versionName = packageInfo.versionName;
appInfo.icon = app.loadIcon(pm);
appInfo.name = app.loadLabel(pm).toString();
appInfo.cacheSize = stats.cacheSize;
appInfo.dataSize = stats.dataSize;
appInfos.add(appInfo);
}
}
return appInfos;
}
项目:AppInfo
文件:ListAppActivity.java
/*** �ص�������
* @param pStatus ,�������ݷ�װ��PackageStats������
* @param succeeded ����ص��ɹ�
*/
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
cachesize = pStats.cacheSize ; //�����С
datasize = pStats.dataSize ; //���ݴ�С
codesize = pStats.codeSize ; //Ӧ�ó����С
totalsize = cachesize + datasize + codesize ;
Log.i(TAG, "cachesize--->"+cachesize+" datasize---->"+datasize+ " codeSize---->"+codesize);
Log.i(TAG, "Ŀǰ���߳�����" + Thread.currentThread().getName());
// ��ȡ��������ʾAlertDialog
// ���Եõ�����δ�����߳���Binder_1,2,3�����ȣ�����Ҫ�������̵߳���showAlertDialog()
runOnUiThread(new Runnable() {
@Override
public void run() {
showAlertDialog();
}
});
}
项目:Graduation-Design
文件:OptimizeActivity.java
/**
* 根据包名获取应用程序的体积信息 注意: 这个方法是一个异步的方法 程序的体积要花一定时间才能获取到.
*
* @param packname
*/
private void setAppSize(final String packname) {
try {
Method method = PackageManager.class.getMethod("getPackageSizeInfo", new Class[] { String.class, IPackageStatsObserver.class });
method.invoke(getPackageManager(), new Object[] { packname, new IPackageStatsObserver.Stub() {
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
// 注意这个操作是一个异步的操作
long codesize = pStats.codeSize;
long datasize = pStats.dataSize;
Logger.i(TAG, packname);
CacheInfo info = maps.get(packname);
info.setDataSize(Formatter.formatFileSize(mApp, datasize));
info.setCodeSize(Formatter.formatFileSize(mApp, codesize));
maps.put(packname, info);
}
} });
} catch (Exception e) {
e.printStackTrace();
}
}
项目:DeviceControl
文件:PackageStatsObserver.java
@Override public boolean onTransact(int code, Parcel data, Parcel reply, int flags)
throws RemoteException {
switch (code) {
case INTERFACE_TRANSACTION: {
reply.writeString(DESCRIPTOR);
return true;
}
case FIRST_CALL_TRANSACTION: {
data.enforceInterface(DESCRIPTOR);
final PackageStats _arg0;
if ((0 != data.readInt())) {
_arg0 = PackageStats.CREATOR.createFromParcel(data);
} else {
_arg0 = null;
}
final boolean _arg1 = (0 != data.readInt());
this.onGetStatsCompleted(_arg0, _arg1);
return true;
}
}
return true;
}
项目:DiskUsage.0
文件:FileSystemPackage.java
public FileSystemPackage(
String name, String pkg, PackageStats stats,
int flags, Long hackApkSize, int blockSize) {
super(null, name);
this.pkg = pkg;
this.cacheSize = stats.cacheSize;
this.dataSize = stats.dataSize;
this.flags = flags | (hackApkSize != null ? SDCARD_FLAG : 0);
this.dalvikCacheSize = guessDalvikCacheSize();
if (onSD()) {
if (hackApkSize != null) {
this.codeSize = hackApkSize.intValue();
} else {
this.codeSize = stats.codeSize;
}
} else {
this.codeSize = stats.codeSize - this.dalvikCacheSize;
}
}
项目:AndroidPractices
文件:CacheScanTask.java
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public void onGetStatsCompleted(PackageStats packageStats, boolean succeeded)
throws RemoteException {
mScanCount++;
if (packageStats == null || !succeeded) {
} else {
mCallBack.onScanProgress((int)(mScanCount * 100 / mTotalCount));
CacheInfo cacheInfo = new CacheInfo();
cacheInfo.setPackageName(packageStats.packageName);
cacheInfo.setCacheSize(packageStats.cacheSize);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
cacheInfo.setCacheSize(packageStats.cacheSize + packageStats.externalCacheSize);
}
cacheInfo.setChecked(true);
ArrayList<CacheInfo> caches = CacheLab.get(mAppContext).getCaches();
if (cacheInfo.getCacheSize() != 0) {
caches.add(cacheInfo);
}
}
if (mScanCount == mTotalCount) {
mCallBack.onScanFinish();
}
}
项目:qsysinfo
文件:ApplicationManager.java
public void onGetStatsCompleted( PackageStats pStats, boolean succeeded )
throws RemoteException
{
AppInfoHolder holder = appCache.appLookup.get( pStats.packageName );
if ( holder != null )
{
synchronized ( appCache )
{
holder.size = Formatter.formatFileSize( ac, pStats.codeSize )
+ " + " //$NON-NLS-1$
+ Formatter.formatFileSize( ac, pStats.dataSize )
+ " (" //$NON-NLS-1$
+ Formatter.formatFileSize( ac, pStats.cacheSize )
+ ')';
holder.codeSize = pStats.codeSize;
holder.dataSize = pStats.dataSize;
holder.cacheSize = pStats.cacheSize;
}
}
count.countDown( );
}
项目:stynico
文件:AnimatedEditText.java
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
String packageName = pStats.packageName;
long cacheSize = pStats.cacheSize;
long codeSize = pStats.codeSize;
long dataSize = pStats.dataSize;
// sb.delete(0, sb.length());
if (cacheSize > 0) {
}
}
项目:stynico
文件:dex_smali.java
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
String packageName = pStats.packageName;
long cacheSize = pStats.cacheSize;
long codeSize = pStats.codeSize;
long dataSize = pStats.dataSize;
// sb.delete(0, sb.length());
if (cacheSize > 0) {
}
}
项目:mao-android
文件:PmFragment.java
private void getPackageInfo(Context context, String pkg) {
PackageManager pm = context.getPackageManager();
try {
Method method_getPackageSizeInfo = pm.getClass().getMethod("getPackageSizeInfo", String.class, IPackageStatsObserver.class);
method_getPackageSizeInfo.invoke(pm, pkg, new IPackageStatsObserver.Stub() {
@Override
public IBinder asBinder() {
log.d("asBinder");
return super.asBinder();
}
@Override
public void onGetStatsCompleted(PackageStats packageStats, boolean b) throws RemoteException {
final StringBuilder sb = new StringBuilder("onGetStatsCompleted\n");
sb.append("packageName:").append(packageStats.packageName).append("\n");
sb.append("cacheSize:").append(packageStats.cacheSize).append("\n");
sb.append("dataSize:").append(packageStats.dataSize).append("\n");
sb.append("externalDataSize:").append(packageStats.externalDataSize).append("\n");
log.i(sb.toString());
mHandler.post(new Runnable() {
@Override
public void run() {
mDataBinding.txtContent.setText(sb);
}
});
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
项目:MobilePhoneSafeProtector
文件:CacheClearListActivity.java
@Override
public void onGetStatsCompleted(PackageStats pStats,boolean successd) throws RemoteException {
long cachesize = pStats.cacheSize;
if (cachesize >= 0) {
CacheInfo cacheinfo = new CacheInfo();
cacheinfo.setPackagename(info.packageName);
cacheinfo.setCachesize(cachesize);
cacheinfo.setAppname(info.applicationInfo.loadLabel(packageManager).toString());
cacheinfo.setAppicon(info.applicationInfo.loadIcon(packageManager));
cacheInfos.add(cacheinfo);
cacheMemory += cachesize;
}
}
项目:EndCallAndClearCacheDemo
文件:ClearCacheActivity.java
public void onGetStatsCompleted(PackageStats stats, boolean succeeded) {
long cachesize = stats.cacheSize;//缓存大小
/*long codesize = stats.codeSize;//应用程序的大小
long datasize = stats.dataSize;//数据大小
*/ if (cachesize > 0) {
String cache = Formatter.formatFileSize(ClearCacheActivity.this, cachesize);
list.add(new CachInfo(stats.packageName, cache));
}
/*String code = Formatter.formatFileSize(getActivity(), codesize);
String data = Formatter.formatFileSize(getActivity(), datasize);*/
// System.out.println(stats.packageName+"cachesize:"+cache +" codesize:"+code+" datasize:"+data);
}
项目:MobileGuard
文件:AppManagerEngine.java
/**
* get app size by package name
* @param context
* @param packageName package name
* @param listener it will be call when success to get size
*/
public static void getAppSize(Context context, String packageName, final AppSizeInfoListener listener) {
// check argument
if(null == listener) {
throw new NullPointerException("listener can't be null");
}
if(TextUtils.isEmpty(packageName)) {
throw new IllegalArgumentException("packageName can't be empty");
}
// get pm
PackageManager pm = context.getPackageManager();
Method getPackageSizeInfo = null;
try {
// get method getPackageSizeInfo
getPackageSizeInfo = pm.getClass().getMethod(
"getPackageSizeInfo",
String.class, IPackageStatsObserver.class);
// call method
getPackageSizeInfo.invoke(pm, packageName,
new IPackageStatsObserver.Stub() {
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
// call listener
listener.onGetSizeInfoCompleted(
new AppSizeInfo(pStats.cacheSize, pStats.dataSize, pStats.codeSize));
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
项目:FlyWoo
文件:AppUtils.java
/**
* 返回用户已安装应用列表
*/
public static List<AppEntity> getAppList(Context context) {
PackageManager pm = context.getPackageManager();
List<PackageInfo> packageInfos = pm.getInstalledPackages(0);
List<AppEntity> appInfos = new ArrayList<AppEntity>();
for (PackageInfo packageInfo : packageInfos) {
ApplicationInfo app = packageInfo.applicationInfo;
if ((app.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
// 非系统应用
File apkfile = new File(app.sourceDir);
PackageStats stats = new PackageStats(packageInfo.packageName);
AppEntity appInfo = new AppEntity(app.sourceDir);
appInfo.setPackageName(packageInfo.packageName);
appInfo.setVersionCode(packageInfo.versionCode);
appInfo.setVersionName(packageInfo.versionName);
appInfo.setUid(app.uid);
appInfo.setIcon(app.loadIcon(pm));
appInfo.setAppName(app.loadLabel(pm).toString());
appInfo.setCacheSize(stats.cacheSize);
appInfo.setDataSize(stats.dataSize);
appInfos.add(appInfo);
}
}
return appInfos;
}
项目:PhoneMate
文件:Utils.java
public static long getPkgSize(final Context context, String pkgName) throws NoSuchMethodException,
InvocationTargetException,
IllegalAccessException {
long pkgSize=0;
// getPackageSizeInfo是PackageManager中的一个private方法,所以需要通过反射的机制来调用
Method method = PackageManager.class.getMethod("getPackageSizeInfo",
new Class[]{String.class, IPackageStatsObserver.class});
// 调用 getPackageSizeInfo 方法,需要两个参数:1、需要检测的应用包名;2、回调
method.invoke(context.getPackageManager(), new Object[]{
pkgName,
new IPackageStatsObserver.Stub() {
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
// 子线程中默认无法处理消息循环,自然也就不能显示Toast,所以需要手动Looper一下
Looper.prepare();
// 从pStats中提取各个所需数据
// pkgSize= pStats.cacheSize+pStats.dataSize+pStats.codeSize;
// Toast.makeText(context,
// "缓存大小=" + Formatter.formatFileSize(context, pStats.cacheSize) +
// "\n数据大小=" + Formatter.formatFileSize(context, pStats.dataSize) +
// "\n程序大小=" + Formatter.formatFileSize(context, pStats.codeSize),
// Toast.LENGTH_LONG).show();
// 遍历一次消息队列,弹出Toast
Looper.loop();
}
}
});
return pkgSize;
}
项目:DeviceControl
文件:PackageStatsObserver.java
@Override public void onGetStatsCompleted(final PackageStats pStats, final boolean success) throws RemoteException {
Timber.v("onGetStatsCompleted(): %s", success);
App.HANDLER.post(new Runnable() {
@Override
public void run() {
packageStatsListener.onPackageStats(pStats);
}
});
}
项目:android-cache-cleaner
文件:CleanerService.java
private long addPackage(List<AppsListItem> apps, PackageStats pStats, boolean succeeded) {
long cacheSize = 0;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
cacheSize += pStats.cacheSize;
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
cacheSize += pStats.externalCacheSize;
}
if (!succeeded || cacheSize <= 0) {
return 0;
}
try {
PackageManager packageManager = getPackageManager();
ApplicationInfo info = packageManager.getApplicationInfo(pStats.packageName,
PackageManager.GET_META_DATA);
apps.add(new AppsListItem(pStats.packageName,
packageManager.getApplicationLabel(info).toString(),
packageManager.getApplicationIcon(pStats.packageName),
cacheSize));
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return cacheSize;
}
项目:Mobile-guards
文件:CacheClearActivity.java
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
long cacheSize = pStats.cacheSize;//得到缓存大小
if (cacheSize > 0) {//没有缓存的就不处理了
String appName = installPackage.applicationInfo.loadLabel(packageManager).toString();//得到应用名称
Drawable icon = installPackage.applicationInfo.loadIcon(packageManager);//得到应用LOGO
String packageName = installPackage.applicationInfo.packageName;//应用包名
CacheInfos cacheInfo = new CacheInfos(cacheSize, appName, packageName, icon);
cacheInfos.add(cacheInfo);//增加到集合中
}
}
项目:AndroidAgent
文件:OCSSoftwares.java
public OCSSoftwares(Context ctx) {
OCSLog ocslog = OCSLog.getInstance();
softs = new ArrayList<>();
PackageManager pm = ctx.getPackageManager();
List<PackageInfo> pis = ctx.getPackageManager().getInstalledPackages(
PackageManager.GET_ACTIVITIES | PackageManager.GET_PROVIDERS);
for (PackageInfo pi : pis) {
// Exclude systeme softwares i required
if (OCSSettings.getInstance(ctx).isSysHide() && (pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
continue;
}
OCSSoftware oSoft = new OCSSoftware();
try {
PackageInfo lpInfo = pm.getPackageInfo(pi.packageName,
PackageManager.GET_ACTIVITIES | PackageManager.GET_PROVIDERS);
ocslog.debug("PKG name " + lpInfo.packageName);
ocslog.debug("PKG version " + String.valueOf(lpInfo.versionCode));
ocslog.debug("PKG version name " + lpInfo.versionName);
oSoft.setVersion(lpInfo.versionName);
oSoft.setPublisher(lpInfo.packageName);
} catch (NameNotFoundException e) {
ocslog.error("Error :" + e.getMessage());
}
PackageStats stats = new PackageStats(pi.packageName);
ocslog.debug("PKG size " + String.valueOf(stats.codeSize));
ocslog.debug("PKG folder " + pi.applicationInfo.dataDir);
oSoft.setFilesize(String.valueOf(stats.codeSize));
oSoft.setFolder(pi.applicationInfo.dataDir);
if (pi.applicationInfo.name != null) {
oSoft.setName(pi.applicationInfo.name);
} else if (pi.applicationInfo.className != null) {
oSoft.setName(pi.applicationInfo.className);
} else {
String v[] = oSoft.getPublisher().split("\\.");
if (v.length > 0) {
oSoft.setName(v[v.length - 1]);
} else {
oSoft.setName(oSoft.getPublisher());
}
}
ocslog.debug("PKG appname " + oSoft.getName());
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
String datei = (String) DateFormat.format("MM/dd/yy mm:ss", pi.firstInstallTime);
ocslog.debug("PKG INSTALL :" + datei);
oSoft.setInstallDate(datei);
}
ProviderInfo[] provsi = pi.providers;
if (provsi != null) {
for (ProviderInfo aProvsi : provsi) {
ocslog.debug("PKG Provider " + aProvsi.authority);
if (aProvsi.descriptionRes != 0) {
ocslog.debug("PKG Desc " + String.valueOf(aProvsi.descriptionRes));
}
}
if (provsi.length > 0) {
oSoft.setPublisher(provsi[0].authority);
}
}
softs.add(oSoft);
}
Properties sp = System.getProperties();
OCSSoftware jsoft = new OCSSoftware();
jsoft.setName(sp.getProperty("java.vm.name"));
jsoft.setVersion(sp.getProperty("java.vm.version"));
jsoft.setFolder(sp.getProperty("java.home"));
jsoft.setPublisher(sp.getProperty("java.vm.vendor"));
jsoft.setFilesize("n.a");
jsoft.setInstallDate("n.a.");
softs.add(jsoft);
}
项目:diskusage
文件:AppStatsImpl.java
public AppStatsImpl(PackageStats packageStats) {
this.packageStats = packageStats;
}
项目:android-cache-cleaner
文件:CleanerService.java
@Override
protected List<AppsListItem> doInBackground(Void... params) {
mCacheSize = 0;
final List<ApplicationInfo> packages = getPackageManager().getInstalledApplications(
PackageManager.GET_META_DATA);
publishProgress(0, packages.size());
final CountDownLatch countDownLatch = new CountDownLatch(packages.size());
final List<AppsListItem> apps = new ArrayList<>();
try {
for (ApplicationInfo pkg : packages) {
mGetPackageSizeInfoMethod.invoke(getPackageManager(), pkg.packageName,
new IPackageStatsObserver.Stub() {
@Override
public void onGetStatsCompleted(PackageStats pStats,
boolean succeeded)
throws RemoteException {
synchronized (apps) {
publishProgress(++mAppCount, packages.size());
mCacheSize += addPackage(apps, pStats, succeeded);
}
synchronized (countDownLatch) {
countDownLatch.countDown();
}
}
}
);
}
countDownLatch.await();
} catch (InvocationTargetException | InterruptedException | IllegalAccessException e) {
e.printStackTrace();
}
return new ArrayList<>(apps);
}
项目:OpenAPK
文件:PackageStatsListener.java
void onPackageStats(PackageStats packageStats);
项目:DeviceControl
文件:PackageStatsObserver.java
void onPackageStats(final PackageStats packageStats);