获取android系统上的所有程序信息
jopen
10年前
下面的示例可以获取手机上所有的应用程序信息,代码如下: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; } }