获取进程列表,需使用ActivityManager中的方法获取进程名;再根据进程名,获取应用程序的ApplicationInfo对象;用ApplicationInfo中的方法为进程加载图标和程序名称。获取服务、任务列表方法同上。
实例化ActivityManager
private ActivityManager mActivityManager;
mActivityManager=(ActivityManager)getSystemService(ACTIVITY_SERVICE);
获取任务列表
public void getTasks() {
ArrayList<String> aryListTaskID = new ArrayList<String>();
ArrayList<String> aryListTaskName = new ArrayList<String>();
//以getRunningTasks()取得进程TaskInfo
List<ActivityManager.RunningTaskInfo> mRunningTasks =
mActivityManager.getRunningTasks(intGetTaskCounter);
for (ActivityManager.RunningTaskInfo amTask : mRunningTasks) {
aryListTaskName.add(amTask.baseActivity.getClassName());
aryListTaskID.add("" + amTask.id);
intTaskNum++;
}
}
获取服务列表
public void getService() {
linkListServiceIcon = new LinkedList<Drawable>();
aryListServiceInfo = new ArrayList<String>();
aryListServiceName = new ArrayList<String>();
List<ActivityManager.RunningServiceInfo> serivces =
mActivityManager.getRunningServices(intGetServiceCounter);
for (RunningServiceInfo service : serivces) {
programUtil.setProcessName(service.process);
// 根据进程名,获取应用程序的ApplicationInfo对象
ApplicationInfo tempAppInfo = packageUtil.getApplicationInfo(service.process);
// 为进程加载图标和程序名称
if (tempAppInfo != null) {
linkListServiceIcon.add(tempAppInfo.loadIcon(packageManager));
aryListServiceName.add(tempAppInfo.loadLabel(packageManager).toString());
} else {
linkListServiceIcon.add(getApplicationContext().getResources().getDrawable(R.drawable.ic_launcher));
aryListServiceName.add(service.process);
}
//MemInfo是否可得,不行则用包名代替
if (!(mProcessMemoryUtil.getMemInfoByPid(service.pid) == "")) {
aryListServiceInfo.add(mProcessMemoryUtil.getMemInfoByPid(service.pid));
} else {
aryListServiceInfo.add(service.process);
}
intServiceNum++;
}
Log_Ma.e("服务数量:" + intServiceNum);
Log_Ma.e("可用内存:" + fileSize(getAvailableRAM()));
}
获取进程列表
public void getProcess() {
linkListProcessIcon = new LinkedList<Drawable>();
aryListProcessInfo = new ArrayList<String>();
aryListProcessName = new ArrayList<String>();
List<RunningAppProcessInfo> apps =
mActivityManager.getRunningAppProcesses();
for (RunningAppProcessInfo app : apps) {
//包名
// aryListProcessName.add(app.processName);
programUtil.setProcessName(app.processName);
// 根据进程名,获取应用程序的ApplicationInfo对象
ApplicationInfo tempAppInfo = packageUtil.getApplicationInfo(app.processName);
// 为进程加载图标和程序名称
if (tempAppInfo != null) {
linkListProcessIcon.add(tempAppInfo.loadIcon(packageManager));
aryListProcessName.add(tempAppInfo.loadLabel(packageManager).toString());
} else {
linkListProcessIcon.add(getApplicationContext().getResources().getDrawable(R.drawable.ic_launcher));
aryListProcessName.add(app.processName);
}
//MemInfo是否可得,不行则用包名代替
if (!(mProcessMemoryUtil.getMemInfoByPid(app.pid) == "")) {
aryListProcessInfo.add(mProcessMemoryUtil.getMemInfoByPid(app.pid));
} else {
aryListProcessInfo.add(app.processName);
}
intProcessNum++;
}
Log_Ma.e("程序数量:" + intProcessNum);
Log_Ma.e("可用内存:" + fileSize(getAvailableRAM()));
}
获取已经安装的所有应用
// 获取已经安装的所有应用, PackageInfo 系统类,包含应用信息
public static void getPackages(Context context) {
List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packages.size(); i++) {
PackageInfo packageInfo = packages.get(i);
if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { //非系统应用
String mName = packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString();//获取应用名称
// AppInfo 自定义类,包含应用信息
Bean_AppInfo appInfo = new Bean_AppInfo();
appInfo.setAppName(mName);
appInfo.setPackageName(packageInfo.packageName); //获取应用包名,可用于卸载和启动应用
appInfo.setVersionName(packageInfo.versionName);//获取应用版本名
appInfo.setVersionCode(packageInfo.versionCode + "");//获取应用版本号
// appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(context.getPackageManager()));//获取应用图标
Log_Ma.e(TAG, appInfo.toString());
} else { // 系统应用
}
}
}
卸载应用【非静默】
//卸载应用【非静默】
private static void deleteAPK(Context context, String pkg) {
Uri packageUri = Uri.parse("package:" + pkg);
Intent intent = new Intent(Intent.ACTION_DELETE, packageUri);
context.startActivity(intent);
}