我使用以下代码 fragment 成功获取了当前安装的应用程序的应用程序图标:
List<ApplicationInfo> list = pm.getInstalledApplications(PackageManager.GET_ACTIVITIES);
for (int i=0; i< list.size(); i++)
{
randInt1 = new Random().nextInt(list.size());
ApplicationInfo appInfo = list.get(randInt1);
packageName = appInfo.packageName;
appLabel = (String) pm.getApplicationLabel(appInfo);
icon = pm.getApplicationIcon(appInfo);
System.out.println("Icon ==> " +icon);
}
如何返回当前正在运行的任务的图标,而不仅仅是已安装的应用程序?
好吧,这就是我最后做的,它似乎工作正常,但是有没有办法只检索用户启动的任务,就像任务 killer 会返回而不是 hibernate 的系统进程一样?他们可以按类别过滤吗?如果有帮助,目标是为用户最近启动的当前正在运行的任务之一返回一个随机应用程序图标。
int ii=0;
List< ActivityManager.RunningTaskInfo> Runningtasks= mgr.getRunningTasks(30);
for(ii=0;ii<Runningtasks.size();ii++)
{
randInt1 = new Random().nextInt(Runningtasks.size());
ComponentName comName=Runningtasks.get(randInt1).topActivity;
packageName = comName.getPackageName();
//String Classname = comName.getClassName();
System.out.println("icon====> "+icon);
System.out.println("packageName====> "+packageName);
// Toast toast1 = Toast.makeText(pm, packageName, LONG);
// toast1.show();
}
try{
icon = pm.getApplicationIcon(packageName);
}catch(Exception e){}
最佳答案
您可以使用ActivityManager.getRunningTasks()
获取正在运行的列表tasks .该列表将有一个 RunningTaskInfo其中包含一个名为 baseActivity 的字段,它是一个 ComponentName。
从那里你可以做类似的事情:
PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(componentName.getPackageName(), 0);
... // rest of the code as you previously did..
关于java - 获取android中当前正在运行的任务的应用程序图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864045/