我正在做的是获取手机上所有当前正在运行的进程的列表。我做过的,
private List<RunningAppProcessInfo> process;
private ActivityManager activityMan;
...
activityMan = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
process = activityMan.getRunningAppProcesses();
这很好用。当我调用processName字段时,如
process.get(i).processName;
我得到了一个像com.android.mail这样的名字。
我正在尝试做的是使用它来访问该应用程序,以便我可以向用户显示其图标,但我找不到任何可以让我这样做的东西。有什么东西可以帮助我吗?
我在我的英雄上测试这个应用程序,所以api级别为3(android 1.5)。
感谢。
答案 0 :(得分:16)
好的,我想出了怎么做。如果你好奇这就是我所做的。
private PackageManager pk;
pk = getPackageManager();
....
pk.getApplicationIcon(process.get(i).processName)
感谢。
答案 1 :(得分:0)
尝试这样做一个名为packageinformation的类:
公共类PackageInformation {
private Context mContext;
public PackageInformation(Context context){
mContext=context;
}
class InfoObject {
public String appname = "";
public String pname = "";
public String versionName = "";
public int versionCode = 0;
public Drawable icon;
public void InfoObjectAggregatePrint() {//not used yet
Log.v(appname,appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);
}
} private ArrayList getPackages(){ ArrayList apps = getInstalledApps(false); / * false =没有系统包* / final int max = apps.size(); for(int i = 0; i
public ArrayList<InfoObject> getInstalledApps(boolean getSysPackages) {
ArrayList<InfoObject> res = new ArrayList<InfoObject>();
List<PackageInfo> packs = mContext.getPackageManager().getInstalledPackages(0);
for(int i=0;i<packs.size();i++) {
PackageInfo p = packs.get(i);
if ((!getSysPackages) && (p.versionName == null)) {
continue ;
}
InfoObject newInfo = new InfoObject();
newInfo.appname = p.applicationInfo.loadLabel(mContext.getPackageManager()).toString();
newInfo.pname = p.packageName;
newInfo.versionName = p.versionName;
newInfo.versionCode = p.versionCode;
newInfo.icon = p.applicationInfo.loadIcon(mContext.getPackageManager());
res.add(newInfo);
}
return res;
}
}
把它扔到某个地方然后现在要从工人阶级获取信息:
PackageInformation androidPackagesInfo=new PackageInformation(this);
ArrayList<InfoObject> appsData=androidPackagesInfo.getInstalledApps(true);
for (InfoObject info : appsData) {
Toast.makeText(MainActivity.this, info.appname,2).show();
Drawable somedrawable=info.icon;
}
答案 2 :(得分:0)
从Android 3.0开始,你可能想要获得一个更大的启动器图标,你无法按照你所描述的方式获得。如果是这样,也许我对下面问题的回答可以帮助您:Getting App Icon in Android
答案 3 :(得分:0)
虽然packagemanager.getApplicationIcon(pkagename)适用于某些应用,但并非适用于所有应用。
在这里找到更好的答案: how to get running applications icon on android programmatically
用途:
matplotlib.pyplot