当前位置:操作系统 > 安卓/Android >>

android获取正在运行的应用程序

 
           因为在framework中想添加这个功能,所以写了个appliction来实现一下获取正在运行的应用程序:
 
还是先看图吧:
 
这个app主要是简单的实现了获取非系统的应用程序和一些常用的系统应用程序,显示在一个listview中,并添加了点击(回复到你打开的界面)和长按事件(关闭应用程序)。
 
看看代码吧:
 
直接贴出来再加上注释吧(直接写在一个文件里):
package andorid.tasks;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.SimpleAdapter.ViewBinder;
public class ManagerTasksActivity extends Activity {
    private ListView listView;
    private PackageManager pm;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.task_main);
         pm= this.getPackageManager();//获得包管理器
        listView=(ListView)findViewById(R.id.list_view);
        LoadList(this);//加载listview
        
    }
    private void LoadList(Context context)
    {
        ArrayList<HashMap<String, Object>> list=new ArrayList<HashMap<String, Object>>();
           try{            
            ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);  //获得ActivityManager对象
            List<RunningAppProcessInfo> runningTasks = am.getRunningAppProcesses();  //获得所有正在进行的程序存放在一个list中
             for(int i=0;i<runningTasks.size();i++)
             {
                 PackageInfo pInfo=new PackageInfo(context);//获得PackageInfo对象
                //get application which is not in system and the usually 
                //如果是非系统应用程序以及一些常用的应用程序就加到list中
                if((pInfo.getInfo(runningTasks.get(i).processName).flags&pInfo.getInfo(runningTasks.get(i).processName).FLAG_SYSTEM)==0
                        ||(runningTasks.get(i).processName).equals("com.android.contacts")
                        ||(runningTasks.get(i).processName).equals("com.android.email")
                        ||(runningTasks.get(i).processName).equals("com.android.settings")
                        ||(runningTasks.get(i).processName).equals("com.android.music")
                        ||(runningTasks.get(i).processName).equals("com.android.calendar")
                        ||(runningTasks.get(i).processName).equals("com.android.calculator2")
                        ||(runningTasks.get(i).processName).equals("com.android.browser")
                        ||(runningTasks.get(i).processName).equals("com.android.camera")
                        ||(runningTasks.get(i).processName).equals("com.cooliris.media")
                        ||(runningTasks.get(i).processName).equals("com.android.bluetooth")
                        ||(runningTasks.get(i).processName).equals("com.android.mms"))
                {
                     String dir = pInfo.getInfo(runningTasks.get(i).processName).publicSourceDir;
                     Float size=Float.valueOf((float) ((new File(dir).length()*1.0)));//获得应用程序的大小如果size大于一M就用M为单位,否则用KB
                     //long date = new Date(new File(dir).lastModified()).getTime();
                     //System.out.println(pInfo.getInfo(runningTasks.get(i).processName).loadIcon(pm));
                     HashMap<String, Object> map=new HashMap<String, Object>();
                     map.put("icon", pInfo.getInfo(runningTasks.get(i).processName).loadIcon(pm));  
                     map.put("name", pInfo.getInfo(runningTasks.get(i).processName).loadLabel(pm));
                     if(size>1024*1024)
                     map.put("info", size/1024/1024+" MB");
                     else 
                     map.put("info", size/1024+" KB");
                     map.put("packagename", runningTasks.get(i).processName.toString());//获得包名给后面用
                     list.add(map);
                }                
&
补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,