下面这是我的code,但我得到默认的Android启动器图标的所有正在运行的应用程序:
PackageManager PM = getPackageManager();
ActivityManager AM1 =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
名单< RunningTaskInfo>流程= am1.getRunningTasks(Integer.MAX_VALUE的);
如果(进程!= NULL){
对于(INT K = 0; K< processes.size(); k ++){
//字符串PKGNAME = app.getPackageName();
字符串的packageName = processes.get(K).topActivity
.getPackageName();
可绘制ICO = NULL;
尝试
{
字符串PNAME =(字符串)pm.getApplicationLabel(PM
.getApplicationInfo(的packageName,
PackageManager.GET_META_DATA));
ICO = pm.getApplicationIcon(PNAME);
}
赶上(的NameNotFoundException E)
{
Log.e(错误,无法找到图标包'
+的packageName +':+ e.getMessage());
}
icons.put(processes.get(K).topActivity.getPackageName(),ICO);
}
解决方案
只是替换这行
ICO = pm.getApplicationIcon(PNAME);
本
ICO = getApplicationInfo()loadIcon(getPackageManager())。
EDITED 满code:
公共无效getAllICONS(){
PackageManager下午= getPackageManager();
ActivityManager AM1 =(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
名单< RunningTaskInfo>流程= AM1
.getRunningTasks(Integer.MAX_VALUE的);
如果(进程!= NULL){
为(中间体K = 0; K&小于5; k ++){
//字符串PKGNAME = app.getPackageName();
字符串的packageName = processes.get(K).topActivity
.getPackageName();
Log.e(的packageName - >中,+的packageName);
可绘制ICO = NULL;
尝试 {
字符串PNAME =(字符串)pm.getApplicationLabel(PM
.getApplicationInfo(的packageName,
PackageManager.GET_META_DATA));
name.add(+ PNAME);
ApplicationInfo A = pm.getApplicationInfo(的packageName,
PackageManager.GET_META_DATA);
ICO = getPackageManager()。getApplicationIcon(
processes.get(k)的.topActivity.getPackageName());
getPackageManager();
Log.e(ICO - >中,+ ICO);
}赶上(的NameNotFoundException E){
Log.e(错误,无法找到图标包'
+的packageName +':+ e.getMessage());
}
// icons.put(processes.get(K).topActivity.getPackageName(),ICO);
icons.add(ICO);
}
}
}
以上code是显示你喜欢的图标:
Below here is my code but i am getting default android launcher icon for all running applications:
PackageManager pm = getPackageManager();
ActivityManager am1 = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> processes = am1.getRunningTasks(Integer.MAX_VALUE);
if (processes != null) {
for (int k = 0; k < processes.size(); k++) {
// String pkgName = app.getPackageName();
String packageName = processes.get(k).topActivity
.getPackageName();
Drawable ico = null;
try
{
String pName = (String) pm.getApplicationLabel(pm
.getApplicationInfo(packageName,
PackageManager.GET_META_DATA));
ico = pm.getApplicationIcon(pName);
}
catch (NameNotFoundException e)
{
Log.e("ERROR", "Unable to find icon for package '"
+ packageName + "': " + e.getMessage());
}
icons.put(processes.get(k).topActivity.getPackageName(),ico);
}
解决方案
just replace this line
ico = pm.getApplicationIcon(pName);
to this
ico = getApplicationInfo().loadIcon(getPackageManager());
EDITED full code :
public void getAllICONS() {
PackageManager pm = getPackageManager();
ActivityManager am1 = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> processes = am1
.getRunningTasks(Integer.MAX_VALUE);
if (processes != null) {
for (int k = 0; k < 5; k++) {
// String pkgName = app.getPackageName();
String packageName = processes.get(k).topActivity
.getPackageName();
Log.e("packageName-->", "" + packageName);
Drawable ico = null;
try {
String pName = (String) pm.getApplicationLabel(pm
.getApplicationInfo(packageName,
PackageManager.GET_META_DATA));
name.add("" + pName);
ApplicationInfo a = pm.getApplicationInfo(packageName,
PackageManager.GET_META_DATA);
ico = getPackageManager().getApplicationIcon(
processes.get(k).topActivity.getPackageName());
getPackageManager();
Log.e("ico-->", "" + ico);
} catch (NameNotFoundException e) {
Log.e("ERROR", "Unable to find icon for package '"
+ packageName + "': " + e.getMessage());
}
// icons.put(processes.get(k).topActivity.getPackageName(),ico);
icons.add(ico);
}
}
}
above code is show you icons like: