java获取电脑正在运行的应用程序_获取android中正在运行应用程序的列表

本文介绍了一个简单的Android应用,展示如何使用Java获取设备上正在运行的应用程序列表。通过ActivityManager获取运行进程,并结合PackageManager显示应用的图标和名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近想做一个任务管理器练一练手,第一道题就是获取手机中正在运行的程序。后来在网上找了一下资料,终于有了眉目。废话不多说!看代码。

ActivityMain.java

view plaincopy to clipboardprint?

01.public class ActivityMain extends ListActivity {

02.    @Override

03.    public void onCreate(Bundle savedInstanceState) {

04.        super.onCreate(savedInstanceState);

05.        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

06.

07.       List list = getRunningProcess();

08.       ListAdapter adapter = new ListAdapter(list,this);

09.       getListView().setAdapter(adapter);

10.    }

11.

12.    //正在运行的

13.    public List getRunningProcess(){

14.        PackagesInfo pi = new PackagesInfo(this);

15.

16.        ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);

17.        //获取正在运行的应用

18.        List run = am.getRunningAppProcesses();

19.        //获取包管理器,在这里主要通过包名获取程序的图标和程序名

20.        PackageManager pm =this.getPackageManager();

21.        List list = new ArrayList();

22.

23.        for(RunningAppProcessInfo ra : run){

24.            //这里主要是过滤系统的应用和电话应用,当然你也可以把它注释掉。

25.            if(ra.processName.equals("system") || ra.processName.equals("com.android.phone")){

26.                continue;

27.            }

28.

29.            Programe  pr = new Programe();

30.            pr.setIcon(pi.getInfo(ra.processName).loadIcon(pm));

31.            pr.setName(pi.getInfo(ra.processName).loadLabel(pm).toString());

32.            System.out.println(pi.getInfo(ra.processName).loadLabel(pm).toString());

33.            list.add(pr);

34.        }

35.        return list;

36.    }

37.

38.}

public class ActivityMain extends ListActivity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

List list = getRunningProcess();

ListAdapter adapter = new ListAdapter(list,this);

getListView().setAdapter(adapter);

}

//正在运行的

public List getRunningProcess(){

PackagesInfo pi = new PackagesInfo(this);

ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);

//获取正在运行的应用

List run = am.getRunningAppProcesses();

//获取包管理器,在这里主要通过包名获取程序的图标和程序名

PackageManager pm =this.getPackageManager();

List list = new ArrayList();

for(RunningAppProcessInfo ra : run){

//这里主要是过滤系统的应用和电话应用,当然你也可以把它注释掉。

if(ra.processName.equals("system") || ra.processName.equals("com.android.phone")){

continue;

}

Programe  pr = new Programe();

pr.setIcon(pi.getInfo(ra.processName).loadIcon(pm));

pr.setName(pi.getInfo(ra.processName).loadLabel(pm).toString());

System.out.println(pi.getInfo(ra.processName).loadLabel(pm).toString());

list.add(pr);

}

return list;

}

}

ListAdapter.java

view plaincopy to clipboardprint?

01.public class ListAdapter extends BaseAdapter {

02.    List list = new ArrayList();

03.    LayoutInflater la;

04.    Context context;

05.

06.    public ListAdapter(List list ,Context context){

07.        this.list = list;

08.        this.context = context;

09.    }

10.

11.    @Override

12.    public int getCount() {

13.        // TODO Auto-generated method stub

14.        return list.size();

15.    }

16.    @Override

17.    public Object getItem(int position) {

18.        // TODO Auto-generated method stub

19.        return list.get(position);

20.    }

21.    @Override

22.    public long getItemId(int position) {

23.        // TODO Auto-generated method stub

24.        return position;

25.    }

26.    @Override

27.    public View getView(int position, View convertView, ViewGroup parent) {

28.        ViewHolder holder;

29.        if(convertView == null)

30.        {

31.            la = LayoutInflater.from(context);

32.            convertView=la.inflate(R.layout.list_item, null);

33.

34.            holder = new ViewHolder();

35.            holder.imgage=(ImageView) convertView.findViewById(R.id.image);

36.            holder.text = (TextView) convertView.findViewById(R.id.text);

37.

38.            convertView.setTag(holder);

39.        }else{

40.            holder = (ViewHolder) convertView.getTag();

41.        }

42.         final Programe pr = (Programe)list.get(position);

43.        //设置图标

44.        holder.imgage.setImageDrawable(pr.getIcon());

45.        //设置程序名

46.        holder.text.setText(pr.getName());

47.

48.        return convertView;

49.    }

50.}

51.class ViewHolder{

52.     TextView text;

53.    ImageView imgage;

54.}

public class ListAdapter extends BaseAdapter {

List list = new ArrayList();

LayoutInflater la;

Context context;

public ListAdapter(List list ,Context context){

this.list = list;

this.context = context;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return list.size();

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return list.get(position);

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder holder;

if(convertView == null)

{

la = LayoutInflater.from(context);

convertView=la.inflate(R.layout.list_item, null);

holder = new ViewHolder();

holder.imgage=(ImageView) convertView.findViewById(R.id.image);

holder.text = (TextView) convertView.findViewById(R.id.text);

convertView.setTag(holder);

}else{

holder = (ViewHolder) convertView.getTag();

}

final Programe pr = (Programe)list.get(position);

//设置图标

holder.imgage.setImageDrawable(pr.getIcon());

//设置程序名

holder.text.setText(pr.getName());

return convertView;

}

}

class ViewHolder{

TextView text;

ImageView imgage;

}

PackagesInfo.java

view plaincopy to clipboardprint?

01.public class PackagesInfo {

02.    private List appList;

03.

04.    public PackagesInfo(Context context){

05.        //通包管理器,检索所有的应用程序(甚至卸载的)与数据目录

06.        PackageManager pm = context.getApplicationContext().getPackageManager();

07.        appList = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);

08.    }

09.

10.

11.

12.    /**

13.     * 通过一个程序名返回该程序的一个Application对象。

14.     * @param name  程序名

15.     * @return  ApplicationInfo

16.     */

17.

18.    public ApplicationInfo getInfo(String name){

19.        if(name == null){

20.            return null;

21.        }

22.        for(ApplicationInfo appinfo : appList){

23.            if(name.equals(appinfo.processName)){

24.                return appinfo;

25.            }

26.        }

27.        return null;

28.    }

29.

30.}

public class PackagesInfo {

private List appList;

public PackagesInfo(Context context){

//通包管理器,检索所有的应用程序(甚至卸载的)与数据目录

PackageManager pm = context.getApplicationContext().getPackageManager();

appList = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);

}

/**

* 通过一个程序名返回该程序的一个Application对象。

* @param name 程序名

* @return ApplicationInfo

*/

public ApplicationInfo getInfo(String name){

if(name == null){

return null;

}

for(ApplicationInfo appinfo : appList){

if(name.equals(appinfo.processName)){

return appinfo;

}

}

return null;

}

}

Programe.java

view plaincopy to clipboardprint?

01.public class Programe {

02.    //图标

03.    private Drawable icon;

04.    //程序名

05.    private String name;

06.

07.    public Drawable getIcon() {

08.        return icon;

09.    }

10.    public void setIcon(Drawable icon) {

11.        this.icon = icon;

12.    }

13.    public String getName() {

14.        return name;

15.    }

16.    public void setName(String name) {

17.        this.name = name;

18.    }

19.

20.}

public class Programe {

//图标

private Drawable icon;

//程序名

private String name;

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;

}

}

list_item.xml

view plaincopy to clipboardprint?

01.<?xml version="1.0" encoding="UTF-8"?>

02.

03.    android:orientation="horizontal"

04.    android:layout_width="wrap_content"

05.    android:layout_height="wrap_content"

06.   >

07.   

08.        android:id="@+id/image"

09.        android:layout_width="wrap_content"

10.        android:layout_height="wrap_content"

11.        android:layout_marginRight="10dip"

12.    />

13. 

14.    android:id="@+id/text"

15.    android:layout_width="wrap_content"

16.    android:layout_height="wrap_content"

17.  />

18.

19.  

android:orientation="horizontal"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

>

android:id="@+id/image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginRight="10dip"

/>

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值