android项目获得所有运行程序

首先也是要建立一个javabean

package com.itheima.bean;

import android.graphics.drawable.Drawable;

public class TaskInfo {

    private Drawable icon;
    private String name;
    private String size;
    private boolean isUser;

    public Drawable getIcon() {
        return icon;
    }

    public void setIcon(Drawable icon) {
        this.icon = icon;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSize() {
        return size;
    }

    public void setSize(String size) {
        this.size = size;
    }

    public boolean isUser() {
        return isUser;
    }

    public void setUser(boolean isUser) {
        this.isUser = isUser;
    }

    @Override
    public String toString() {
        return "TaskInfo [name=" + name + ", size=" + size
                + ", isUser=" + isUser + "]";
    }
}

然后通过activitymanager来获取运行中程序的list集合

通过遍历集合获得包名,

在通过packagemanager和包名来获得其他信息

package com.itheima.engine;

import java.util.ArrayList;
import java.util.List;

import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.drawable.Drawable;
import android.os.Debug.MemoryInfo;
import android.text.format.Formatter;

import com.itheima.bean.TaskInfo;
import com.itheima.superman.R;

public class TaskInfoProvider {
    private static String packageName;

    public static List<TaskInfo>getTaskInfo(Context context){
        List<TaskInfo> list = new ArrayList<TaskInfo>();

        ActivityManager am = (ActivityManager) context
                .getSystemService(Context.ACTIVITY_SERVICE);
        PackageManager pm = context.getPackageManager();
        List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();
        for (RunningAppProcessInfo runningAppProcessInfo : runningAppProcesses) {
            TaskInfo task = null;
            try {
                task = new TaskInfo();
                packageName = runningAppProcessInfo.processName;
                //得到图标
                Drawable loadIcon = pm.getPackageInfo(packageName, 0).applicationInfo.loadIcon(pm);
                task.setIcon(loadIcon);
                //得到名称
                task.setName(pm.getPackageInfo(packageName, 0).applicationInfo.loadLabel(pm).toString());
                //是不是用户程序
                int flag = pm.getPackageInfo(packageName, 0).applicationInfo.flags;
                if((flag&ApplicationInfo.FLAG_SYSTEM)==0){
                    task.setUser(true);
                }else{
                    task.setUser(false);
                }
                //得要程序占用运行内存
                MemoryInfo processMemoryInfo = am.getProcessMemoryInfo(new int[]{runningAppProcessInfo.pid})[0];
                String size = Formatter.formatFileSize(context, processMemoryInfo.getTotalPrivateDirty()*1024);
                task.setSize(size);
            } catch (NameNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                //系统中有些程序是用C语言写的没有图标和名字
                task.setIcon(context.getResources().getDrawable(R.drawable.ic_launcher));
                task.setName(packageName);
            }
            list.add(task);
        }
        return list;

    }
}
时间: 2024-08-12 00:49:18

android项目获得所有运行程序的相关文章

Android实现开机自动运行程序

有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service.怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“Don't call me, I'll call you back!”总结Android框架,真是说到点子上了.理解这句话的含义,许多有关Android平台上实现某种功能的问题,都能迎刃而解. 使用场景:手机开机后,自动运行程序,在屏幕上显示"Hello. Istarted!"字样. 背景知识:当Android启动时,会发出一个系统广播,内

&#167;1.2 Android项目结构及“Hello World”应用解析

书接上文,我们创建一个新的Android项目,进入Android Studio开发页面,如下图: 左侧为项目工具窗口,通过项目工具窗口可以管理整个项目的相关文件右侧为代码编辑区,我们可以在这里进行Android程序的开发工作底部为调试区,在调试区可以进行程序的断点调试.日志打印,可以监视整个程序的内存消耗,从而有针对性的进行性能优化. 首先,通过查看左侧的项目工具窗口区,为大家介绍一个Android项目的基本结构: 如上图所示,在这里我们只需要关注图中app目录下的内容: build目录:构建目

【Qt for Android】第一个安卓程序

1)首先需要去官网上下载 Qt for android 版本的 Qt SDK 2)下载 android 相关的 SDK,下载地址不用找了,在Qt Creator工具选项的Android配置中有相应的下载链接地址. 3)下载完安卓SDK后,在上面的配置界面中指定相应SDK的目录,然后在"Build & Run"中新增Android的Kits 4)编写Qt代码后,点击"Run"即可,在弹出的Android设备列表中,选择程序要安装运行的Android设备.(下图

[Xamarin.Android] 在Xamarin.Android项目中使用Component套件

[Xamarin.Android] 在Xamarin.Android项目中使用Component套件 前言 在Xamarin中,可以将自己开发的项目包装成为Component套件,来提供开发人员使用.本篇介绍如何下载并安装Component套件,让开发人员能够使用Xamarin Component Store中的各种Component套件,为自己留个纪录也希望能帮助到有需要的开发人员. 使用 在Xamarin.Android项目中的Components文件夹上,点击右键并且选择「Get More

Android项目运行时报错NoclassDefFoundError

导Android项目时碰到个头疼的NoclassDefFoundError. 项目导入之后是没有报错的,但是运行就报这个错误 java.lang.NoClassDefFoundError: android.support.v4.view.ViewConfigurationCompat 而去查看v4的包,ViewConfigurationCompat这个类确实是存在的. 在解决这个报错的过程中我尝试了各种办法,特此整理下来. 网上一搜,好多解决办法~~ 大致归类为以下几种: http://ydpz

C#程序员学习Android开发系列之Android项目的目录结构

今天开始正式学习Android开发的种种细节,首先从最基本的概念和操作学起. 首先看一下Android项目的目录结构. 这是我随便建立的一个test项目,我们重点关注一下几个方面的内容: 1.src目录:存放java源代码的目录,里面建立一个包,包里面有4个java源文件(分别都继承自Activity).由于java要求比较严格,因此要求类名与文件名一致. gen(Generated Java Files)目录:自动产生Java源文件的目录,是由工具自动生成的,一般不需要自己修改.里面主要有一个

Android中插件开发篇之----动态加载Activity(免安装运行程序)

一.前言 又到周末了,时间过的很快,今天我们来看一下Android中插件开发篇的最后一篇文章的内容:动态加载Activity(免安装运行程序),在上一篇文章中说道了,如何动态加载资源(应用换肤原理解析),没看过的同学,可以转战: http://blog.csdn.NET/jiangwei0910410003/article/details/47679843 当然,今天说道的内容还这这篇文章有关系.关于动态加载Activity的内容,网上也是有很多文章介绍了.但是他们可能大部分都是介绍通过代理的方

解决IDEA下运行android项目 No resource found that matches the given name &#39;Theme.AppCompat.Light&#39;.

1.右击项目选择 解决IDEA下运行android项目 No resource found that matches the given name 'Theme.AppCompat.Light'.

NET5实践:项目创建-结构概述-程序运行-发布部署

ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署 1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project.json中: "frameworks": { "dnx451": { }, "dnxcore50": { } }, ASP.NET5开发时支持多版本的clr共存,但运行时是使用其中一种. dnxcore50是跨平台.模块化的coreclr.它有多种,如