您的位置:首页 > 移动开发 > Android开发

Android笔记 16.8.6 之 获取手机剩余内存

2016-08-06 15:33 246 查看

一、获取手机内存与sd卡剩余内存

long rom_freeSpace = Environment.getDataDirectory().getFreeSpace();
long sd_freeSpace = Environment.getExternalStorageDirectory().getFreeSpace();


二、获取当前运行的软件的集合

1、将当前的运行软件,封装成一个Bean类

private Drawable icon;
private String apkName;
private long apkSize;
private boolean userApp;//表示到底是用户app还是系统app //true 用户
private boolean isRom;//放置的位置
private String apkPackageName;//包名


2、得到当前软件的集合

public class AppInfos {

public static List<AppInfo> getAppInfos(Context context) {

List<AppInfo> packageAppInfos = new ArrayList<>();

PackageManager packageManager = context.getPackageManager();
//获取安装在手机中的包
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);

for (PackageInfo installedPackage : installedPackages) {

AppInfo appInfo =  new AppInfo();

Drawable drawable = installedPackage.applicationInfo.loadIcon(packageManager);
String apkName = installedPackage.applicationInfo.loadLabel(packageManager).toString();
String packageName = installedPackage.packageName;
//应用程序的路径
String sourceDir = installedPackage.applicationInfo.sourceDir;
//应用程序的大小
File file = new File(sourceDir);
long apkSize = file.length();

appInfo.setIcon(drawable);
appInfo.setApkName(apkName);
appInfo.setApkPackageName(packageName);
appInfo.setApkSize(apkSize);

//只要是三方应用:data/data/app
//系统 system/app
//if(sourceDir.startsWith("/system"))

//获取到安装应用程序的标记,二进制
int flags = installedPackage.applicationInfo.flags;
//与系统不为0,则为1,相等,说明为系统应用
if((flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
appInfo.setUserApp(false);
} else {
//用户app
appInfo.setUserApp(true);
}

if((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) != 0) {
//sd卡
appInfo.setIsRom(false);
} else {
appInfo.setIsRom(true);
}

packageAppInfos.add(appInfo);
}

return packageAppInfos;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: