獲取android系統上的所有程序信息

jopen 10年前發布 | 17K 次閱讀 Android Android開發 移動開發

下面的示例可以獲取手機上所有的應用程序信息,代碼如下:MainActivity:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.content.pm.PackageInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleAdapter;

public class MainActivity extends Activity {

private List<Map<String, Object>> data;  
Map<String, Object> item;  
private ListView listView = null;  

@Override  
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  

    listView = new ListView(this);  
    data = new ArrayList<Map<String, Object>>();  
    listPackages();  
    SimpleAdapter adapter = new SimpleAdapter(this, data,  
            android.R.layout.simple_list_item_2, new String[] { "appname",  
                    "pname" }, new int[] { android.R.id.text1,  
                    android.R.id.text2, });  
    listView.setAdapter(adapter);  
    setContentView(listView);  
}  

class PInfo {  
    private String appname = "";  
    private String pname = "";  
    private String versionName = "";  
    private int versionCode = 0;  
    private Drawable icon;  

    private void prettyPrint() {  
        Log.i("taskmanger", appname + "\t" + pname + "\t" + versionName  
                + "\t" + versionCode + "\t");  
    }  
}  

/** 
 * 列出所有的APP信息 
 */  
private void listPackages() {  
    ArrayList<PInfo> apps = getInstalledApps(false);  
    final int max = apps.size();  
    for (int i = 0; i < max; i++) {  
        apps.get(i).prettyPrint();  
        item = new HashMap<String, Object>();  
        item.put("appname", apps.get(i).appname);  
        item.put("pname", apps.get(i).pname);  
        data.add(item);  
    }  
}  

/** 
 * 獲取系統所有已安裝的APP信息 
 *  
 * @param getSysPackages 
 * @return 
 */  
private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {  
    ArrayList<PInfo> res = new ArrayList<PInfo>();  
    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);  
    for (int i = 0; i < packs.size(); i++) {  
        PackageInfo p = packs.get(i);  
        if ((!getSysPackages) && (p.versionName == null)) {  
            continue;  
        }  
        PInfo newInfo = new PInfo();  
        newInfo.appname = p.applicationInfo.loadLabel(getPackageManager())  
                .toString();  
        newInfo.pname = p.packageName;  
        newInfo.versionName = p.versionName;  
        newInfo.versionCode = p.versionCode;  
        newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());  
        res.add(newInfo);  
    }  
    return res;  
}  

} </pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!